通过DM不和给服务器中的用户角色

时间:2020-07-26 16:46:17

标签: node.js discord discord.js roles

尽管如此,我实际上并不了解很多编程知识,我试图制造一个不和谐的机器人,该机器人在DM中询问用户并从中获取答案,并在服务器中分配特定角色。

const Discord = require('discord.js');
const bot = new Discord.Client();
const < role > = '<roleid>';
bot.login('<token>');

bot.on('message', (message) => {
    var mem = (message.author.id)

}
if (message.content == '<hotword>') //calls bot in the server verification channel
{

    message.reply('Hi there! Check your personal message if you want to become one!');
    message.author.send('<question>'); //dm's the user
    message.author.send('<hint>');
}
if (message.content == '<ans>') {
    message.reply('Congrats!! ');
    message.author.send('<next question>');
}
if (message.content == '<ans>') {

    message.author.send('Impressive! ');
    message.guilds.get('<ServerGuildID>').members.get(mem).roles.add( < role > ) //assigns role

}

});

我认为message.guilds.get('<ServerGuildID>').members.get(mem).roles.add(<role>)行中有问题,但是没有足够的程序来解决。

2 个答案:

答案 0 :(得分:0)

您是否正在使用 v12 ?我希望如此,它与以前的版本在某些语法上有所不同,10月将不支持这些语法-因此,我建议您尽快更改。

任何带有 .get 的内容都必须替换为 .cache.get -如v11 to v12 updater guide所示。

这会使您的代码成为bot.guilds.cache.get(<ServerGuildID>).members.cache.get(<MemberID>).roles.add(<RoleID>)

答案 1 :(得分:0)

我对您的代码进行了大致整理,并更改了以下行:

message.guilds.get('<ServerGuildID>').members.get(mem).roles.add(<role>) //assigns role
// to
(await bot.guilds.cache.get('<ServerGuildID>').members.fetch(mem)).roles.add(<role>); // assigns role

如果不确定特定的属性或方法,请参考Discord documentation

修改后的代码

const Discord = require('discord.js');
const bot = new Discord.Client();

const <role> = '<roleid>';

bot.on('message', async (message) => {
  let mem = (message.author.id);

  if (message.content === '<hotword>') // calls bot in the server verification channel
  {
    message.reply('Hi there! Check your personal messages if you want to become one!');
    message.author.send('<question>'); // dm's the user
    message.author.send('<hint>'); 
  }
  else if (message.content === '<ans>')
  {
    message.reply('Congrats!');
    message.author.send('<next question>');
  }
  else if (message.content === '<ans>')
  {
    message.author.send('Impressive!');
    (await bot.guilds.cache.get('<ServerGuildID>').members.fetch(mem)).roles.add(<role>); // assigns role
  }
});

bot.login('<token>');
相关问题