提到的用户的addRole无法正常工作

时间:2019-04-03 18:19:43

标签: javascript node.js bots discord discord.js

我正在尝试制造一个不和谐的机器人,该机器人可以为用户添加特定角色。

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');

我希望该机器人可以为特定人员添加角色

1 个答案:

答案 0 :(得分:3)

首先,您的第一个错误是,您在变量gRoleallowedRole中搜索通道名称而不是角色名称。我更改了这两个变量,使它们搜索角色而不是渠道。

您定义了两次相同的定义,一次是提及,一次是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');