pedroslopez / whatsapp-web.js

A WhatsApp client library for NodeJS that connects through the WhatsApp Web browser app
https://wwebjs.dev
Apache License 2.0
15.53k stars 3.7k forks source link

nao consigo banir usuarios #2468

Closed Tubablack closed 11 months ago

Tubablack commented 1 year ago

Is there an existing issue for this?

Describe the bug

nao consigo banir , mando o comando mas o bot reponde 'O número @5527992260231@c.us não é um participante deste grupo.'

meu codigo

else if (msg.body.toLowerCase().startsWith('!ban ')) { const chat = await msg.getChat(); await chat.sendStateTyping();

if (chat.isGroup) {
    let sender = await msg.getContact();
    let isAdmin = false;

    // Verificar se o remetente é um administrador
    for (let participant of chat.participants) {
        if (participant.id._serialized === sender.id._serialized && participant.isAdmin) {
            isAdmin = true;
            break;
        }
    }

    if (!isAdmin) {
        msg.reply('Apenas administradores podem usar este comando!');
        return;
    }

    // Extrair o número do usuário a ser banido da mensagem
    let numberToBan = msg.body.split(' ')[1] + "@c.us"; // Adicionando "@c.us" para formar o ID correto

    let isParticipant = false;
    for (let participant of chat.participants) {
        if (participant.id._serialized === numberToBan) {
            isParticipant = true;
            break;
        }
    }

    if (!isParticipant) {
        msg.reply(`O número ${numberToBan} não é um participante deste grupo.`);
        return;
    }

    // Remover o membro do grupo
    try {
        await chat.removeParticipants([numberToBan]);
        msg.reply(`O número ${numberToBan} foi banido do grupo!`);
    } catch (error) {
        msg.reply('Houve um erro ao tentar banir este número. Certifique-se de que o bot é administrador.');
    }
} else  {
    msg.reply('Este comando só pode ser usado em um grupo.');
}

}

Expected behavior

que o bot de ban no usuario que eu mandar

Steps to Reproduce the Bug or Issue

peço para bot fazer açaoi !ban e bot nao responde

Relevant Code

else if (msg.body.toLowerCase().startsWith('!ban ')) { const chat = await msg.getChat(); await chat.sendStateTyping();

if (chat.isGroup) {
    let sender = await msg.getContact();
    let isAdmin = false;

    // Verificar se o remetente é um administrador
    for (let participant of chat.participants) {
        if (participant.id._serialized === sender.id._serialized && participant.isAdmin) {
            isAdmin = true;
            break;
        }
    }

    if (!isAdmin) {
        msg.reply('Apenas administradores podem usar este comando!');
        return;
    }

    // Extrair o número do usuário a ser banido da mensagem
    let numberToBan = msg.body.split(' ')[1] + "@c.us"; // Adicionando "@c.us" para formar o ID correto

    let isParticipant = false;
    for (let participant of chat.participants) {
        if (participant.id._serialized === numberToBan) {
            isParticipant = true;
            break;
        }
    }

    if (!isParticipant) {
        msg.reply(`O número ${numberToBan} não é um participante deste grupo.`);
        return;
    }

    // Remover o membro do grupo
    try {
        await chat.removeParticipants([numberToBan]);
        msg.reply(`O número ${numberToBan} foi banido do grupo!`);
    } catch (error) {
        msg.reply('Houve um erro ao tentar banir este número. Certifique-se de que o bot é administrador.');
    }
} else  {
    msg.reply('Este comando só pode ser usado em um grupo.');
}

}

Browser Type

Google Chrome

WhatsApp Account Type

Standard

Does your WhatsApp account have multidevice enabled?

No, I am not using Multi Device

Environment

else if (msg.body.toLowerCase().startsWith('!ban ')) { const chat = await msg.getChat(); await chat.sendStateTyping();

if (chat.isGroup) {
    let sender = await msg.getContact();
    let isAdmin = false;

    // Verificar se o remetente é um administrador
    for (let participant of chat.participants) {
        if (participant.id._serialized === sender.id._serialized && participant.isAdmin) {
            isAdmin = true;
            break;
        }
    }

    if (!isAdmin) {
        msg.reply('Apenas administradores podem usar este comando!');
        return;
    }

    // Extrair o número do usuário a ser banido da mensagem
    let numberToBan = msg.body.split(' ')[1] + "@c.us"; // Adicionando "@c.us" para formar o ID correto

    let isParticipant = false;
    for (let participant of chat.participants) {
        if (participant.id._serialized === numberToBan) {
            isParticipant = true;
            break;
        }
    }

    if (!isParticipant) {
        msg.reply(`O número ${numberToBan} não é um participante deste grupo.`);
        return;
    }

    // Remover o membro do grupo
    try {
        await chat.removeParticipants([numberToBan]);
        msg.reply(`O número ${numberToBan} foi banido do grupo!`);
    } catch (error) {
        msg.reply('Houve um erro ao tentar banir este número. Certifique-se de que o bot é administrador.');
    }
} else  {
    msg.reply('Este comando só pode ser usado em um grupo.');
}

}

Additional context

nao consigo dar ban

bnoagt commented 1 year ago

Eu uso o "mentionedIds" de "message" pra pegar o primeiro membro mencionado e usar o valor no removeParticipant. vc está tentando repassar o número cru citado no message.body, pelo que entendi... E até dá, mas teria que ver no final o que tá sendo repassado usando o console.log, que possivelmente não está sendo repassado o valor corretamente.

Da forma que eu uso, não precisa adicionar o @c.us e o código fica mais limpo.

Aqui está meu trecho: image