【问题标题】:Discord bot that allows members to assign roles to other membersDiscord bot,允许成员将角色分配给其他成员
【发布时间】:2021-11-18 05:51:57
【问题描述】:

我对 JavaScript 编码非常陌生,我正在尝试为我在 Discord 服务器中计划的事件创建一个非常简单的机器人。

如果提到的成员没有在数组中设置角色,它应该做的基本上就是为提到的成员(仅第一个成员)分配一个角色。

const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
const ignoredRoles = ["Overseer, Staff, Bots"],
    mutedRole = "Dead";
client.on('ready', () => { console.log(`Logged in as ${client.user.tag}!`) });
client.on("message", (message) => {
    if (message.content.startsWith("!kill")) {
        let member = message.mentions.members.first();
        if (!member)
            return message.channel.send('You forgot to mention who to kill');
        if (member.roles.find(r => ignoredRoles.includes(r.name)))
            return message.channel.send(`${member.toString()} is not participating in the event!`);
        if (member.roles.find(r => r.name == mutedRole))
            return message.channel.send(`${member.toString()} user is already dead!`);
        member.roles.add(mutedRole)
        message.channel.send(`${member.toString()} has been eliminated!`);
    }
});
client.login('token.env');

虽然代码本身不会引发任何错误(机器人登录并打印就绪状态),但每当我尝试召唤机器人时,它绝对不会做任何事情。我认为我的技能不足以自己解决这个问题,所以任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    您需要分 4 个步骤完成此操作:

    Step 1(Get user and ID at the same time):

    //this'll fetch the first user mentioned, ".id" will return user's id
    let member = message.mentions.users.first().id;
    

    Step 2(Fetch the role):

    //replace [Role ID] by role's actual ID.
    let role = message.guild.roles.cache.find(r => r.id === "[Role ID]");
    

    Step 3:(Check if user has a role)

    if (message.member.roles.cache.find(role)){
      //user is having role, tell them that they already have the role.
    }
    

    Step 4:(Add role to member, continue this after step 3)

    else{
      // Add role to the member
      member.roles.add(role);
    }
    

    最终代码:

    let member = message.mentions.users.first().id;
    let role = message.guild.roles.cache.find(r => r.id === "[Role ID]");
    
    if (message.member.roles.cache.find(role)){
      //user is having role, tell them that they already have the role.
    } else {
      // Add role to the member
      member.roles.add(role);
    }
    

    请查看discord.js official docs,您可以在此处找到与 discord.js 相关的所有内容。

    【讨论】:

    • 我尝试实现您在此处发送的代码,但它似乎已经过时了。由于.some,它不起作用。也许 Discord.JS v13 已停产?无论如何,我现在有点让代码工作了。感谢您的帮助!
    • 也许吧,因为我不再使用 v12 所以 IDK。
    • 顺便说一句,我刚刚更新了它,如果它有效,请将其标记为答案。
    猜你喜欢
    • 2020-07-31
    • 2021-08-11
    • 2021-10-11
    • 2018-06-01
    • 1970-01-01
    • 2014-01-12
    • 2019-04-12
    • 2021-07-19
    • 2021-02-15
    相关资源
    最近更新 更多