好的,所以基本上我试图发出一个命令,当我说.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”),但是它从来没有奏效,我不得不不使用+手动添加前缀,并且我不想在添加角色上做同样的事情
答案 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
}
});
经过测试。