使用命令向成员添加角色

时间:2019-07-15 21:18:49

标签: javascript discord discord.js

好的,所以基本上我试图发出一个命令,当我说.ar Admin @user时 它给了用户Admin或我在.ar之后提到的角色名称,但是它使我失去了大脑细胞,这花了我很长时间,而且由于相同的问题,我的bot前缀不起作用,因此我在自己的前缀中添加了self来绕过它每个命令我都需要帮助,在此先感谢

从字面上看,我从箭头功能到普通代码都做了很多尝试,但是普通代码只给新成员(公会成员)赋予角色

`bot.on('message', message => {
  let userToModify = message.mentions.members.first();

  if (message.content.startsWith(".ar Admin" + userToModify)){
    userToModify.addRole('Admin');
}

});`

就像我之前说过的,每当我声明一个var或string然后转到 .startwith(“ random command” + Var)它只是没用过,我尝试做过 让前缀:“!” 然后.startwith(prefix +“ command”),但是它从来没有奏效,我不得不不使用+手动添加前缀,并且我不想在添加角色上做同样的事情

1 个答案:

答案 0 :(得分:-1)

这就是我要做的。通过从消息内容中的第一个参数中获取角色来定义角色,然后定义成员的工作方式。检查它们是否存在。

使用命令时,角色必须在@提到的用户之前。

bot.on("message", message => {

        const prefix = '!'; // just an example, change to whatever you want

    if (!message.content.startsWith(prefix)) return; // ignores all messages that don't start with the prefix

    const args = message.content.slice(prefix.length).trim().split(/ +/g) // creates an array of arguments for each word after the command
    const cmd = args.shift().toLowerCase(); // this makes the command cASe iNseNsiTiVE

    if (cmd === 'addroll' || cmd === 'ar') { // can use 'addrole', or 'ar' to run command

        let roleToAdd = message.guild.roles.find(r => r.name === `${args[0]}`); // grab the role from the first argument
        let userToModify = message.mentions.members.first(); // grabs the mentioned user

        if (roleToAdd === null) {// if role doesn't exist(aka = null)
            return message.reply(`I couldn't find the ${args[0]} role.`);
        }
        if (userToModify === undefined) {// if noone is mentioned after the role
            return message.reply('You must `@mention` a user!');
        }

        userToModify.addRole(roleToAdd)// add the role
        return message.reply(`${userToModify} has been given the ${roleToAdd} role.`)



        // more code
    }
});

经过测试。