Discord Bot JS V13,没有删除特定角色并添加特定角色

发布于 2025-02-05 09:30:10 字数 1516 浏览 3 评论 0原文

我的代码无法正常工作,我需要您的帮助。它没有显示任何仅在某些机器人中添加位置。

client.on('messageCreate', async(message) => {
   
   // Membros role id = 871442068508123136
   // Manutenção role id = 978322456328687656
   

       let args = message.content.replace(config.prefix, "").split(" ");
       let command = args.shift();
       
   if(message.content.startsWith(config.prefix)) {
       if(command === 'manutencao') {
           const cargo = message.guild.roles.cache.get("871442068508123136");
           message.guild.members.cache.forEach((member) => { 
           if (member.roles.cache.has(cargo)) { // Ativar manutenção
               member.roles.remove("871442068508123136"); // Tirar role membro
               member.roles.add("978322456328687656"); // Adicionar role Manutenção
               console.log(member)
               message.channel.send("Ativado") // Mensagem de aviso que funcionou
           }
           else if(!member.roles.cache.has(cargo)) { // Desativar a Manutenção
               member.roles.remove("978322456328687656"); // Tirar o role Manutenção
               member.roles.add("871442068508123136"); // Adiciona rrole membro
               console.log(member)
               message.channel.send("Desativado") // Mensagem de aviso que funcionou
           }
           });
       }   

   }

});      

机器人必须做什么?

  1. 检查我指定的角色
  2. 是否有这样的角色,机器人必须删除该角色并添加新角色。
  3. 如果成员没有这个角色,则机器人将必须删除另一个特定角色并添加新角色。

PS:机器人必须在服务器的所有成员上执行此操作,除了机器人。

My code is not working, I need your help. It does not show any it only adds position in some bots.

client.on('messageCreate', async(message) => {
   
   // Membros role id = 871442068508123136
   // Manutenção role id = 978322456328687656
   

       let args = message.content.replace(config.prefix, "").split(" ");
       let command = args.shift();
       
   if(message.content.startsWith(config.prefix)) {
       if(command === 'manutencao') {
           const cargo = message.guild.roles.cache.get("871442068508123136");
           message.guild.members.cache.forEach((member) => { 
           if (member.roles.cache.has(cargo)) { // Ativar manutenção
               member.roles.remove("871442068508123136"); // Tirar role membro
               member.roles.add("978322456328687656"); // Adicionar role Manutenção
               console.log(member)
               message.channel.send("Ativado") // Mensagem de aviso que funcionou
           }
           else if(!member.roles.cache.has(cargo)) { // Desativar a Manutenção
               member.roles.remove("978322456328687656"); // Tirar o role Manutenção
               member.roles.add("871442068508123136"); // Adiciona rrole membro
               console.log(member)
               message.channel.send("Desativado") // Mensagem de aviso que funcionou
           }
           });
       }   

   }

});      

What does bot have to do?

  1. Check the role I specify
  2. If members have such a role, the bot will have to remove that role and add a new one.
  3. if the members don't have that role, the bot will have to remove another specific role and add a new one.

PS: The bot has to do this on all members of the server, except the bots.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里°也失望 2025-02-12 09:30:10

使用guild.members.fetch()用于从服务器中获取所有成员。

而不是使用Message.guild.Roles.Cache.get(cole.ID)has()中,您应该直接使用cole.ID

如果(Member.user.bot)返回;:如果成员是bot,则返回。

而且,如果您在循环内使用Message.Channel.Send(),它将向每个成员发送消息。

if (command === 'manutencao') {
    const cargo = "871442068508123136";
    (await guild.members.fetch()).forEach((member) => {
        if (member.user.bot) return;
        if (member.roles.cache.has(cargo)) { // Ativar manutenção
            member.roles.remove("871442068508123136"); // Tirar role membro
            member.roles.add("978322456328687656"); // Adicionar role Manutenção
            console.log(member.user.username)
            return message.channel.send("Ativado") // Mensagem de aviso que funcionou
        }
        else if(!member.roles.cache.has(cargo)) { // Desativar a Manutenção
            member.roles.remove("978322456328687656"); // Tirar o role Manutenção
            member.roles.add("871442068508123136"); // Adiciona rrole membro
            console.log(member.user.username)
            return message.channel.send("Desativado") // Mensagem de aviso que funcionou
        }
    });
}

Use guild.members.fetch() for fetching all members from a server.

Instead of using message.guild.roles.cache.get(role.id) in has(), you should use role.id directly.

if (member.user.bot) return;: return if member is bot.

And if you use the message.channel.send() inside the loop, it will send a message to the server for each member.

if (command === 'manutencao') {
    const cargo = "871442068508123136";
    (await guild.members.fetch()).forEach((member) => {
        if (member.user.bot) return;
        if (member.roles.cache.has(cargo)) { // Ativar manutenção
            member.roles.remove("871442068508123136"); // Tirar role membro
            member.roles.add("978322456328687656"); // Adicionar role Manutenção
            console.log(member.user.username)
            return message.channel.send("Ativado") // Mensagem de aviso que funcionou
        }
        else if(!member.roles.cache.has(cargo)) { // Desativar a Manutenção
            member.roles.remove("978322456328687656"); // Tirar o role Manutenção
            member.roles.add("871442068508123136"); // Adiciona rrole membro
            console.log(member.user.username)
            return message.channel.send("Desativado") // Mensagem de aviso que funcionou
        }
    });
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文