addRole到提到的用户不起作用
我正在尝试制作一个可以为用户添加特定角色的discord bot。
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', (message) => {
let allowedRole = message.guild.channels.find(channel => channel.name === "Streamer");
let gRole = message.guild.channels.find(channel => channel.name === "Stream 1");
mention = message.mentions.users.first();
let member = message.mentions.users.first();
if (message.content === "addRole") {
members.get(message.mentions.user.id).addRole(gRole);
}
});
client.login('mytoken');
我希望机器人可以为特定的人添加角色
回答如下:首先,您的第一个错误是,您在变量gRole
和allowedRole
中搜索了频道名称而不是角色名称。我更改了这两个变量,因此他们搜索角色而不是频道。
你定义了两次相同,一次提及一次和member = message.mentions.users.first()
。因此,我删除了名为mention
的变量并使用了变量member
。我发现此变量的代码与变量的名称不匹配,因为您的代码返回了用户Object,我将其更改为成员Object(因为您的变量名为member)。
最后,我使用了您预定义的变量member
并为其分配了角色gRole
,因此您不必再次获取该成员。
尝试使用以下代码:
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', message => {
const allowedRole = message.guild.roles.find(role => role.name === 'Streamer'); // isn't used
const gRole = message.guild.roles.find(role => role.name === 'Stream 1');
const member = message.mentions.members.first();
if (message.content === 'addRole') {
member.addRole(gRole);
}
});
client.login('mytoken');