我正在尝试制造一个不和谐的机器人,该机器人可以为用户添加特定角色。
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');
我希望该机器人可以为特定人员添加角色
答案 0 :(得分:3)
首先,您的第一个错误是,您在变量gRole
和allowedRole
中搜索通道名称而不是角色名称。我更改了这两个变量,使它们搜索角色而不是渠道。
您定义了两次相同的定义,一次是提及,一次是member = message.mentions.users.first()
。因此,我删除了名为mention
的变量,并使用了变量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');