通过 DM discord 为服务器中的用户赋予角色
Give role to user in a server through DM discord
我实际上不太了解编程,但我正在尝试制作一个 discord 机器人,它在用户的 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>)
行有问题,但编程知识不够,无法解决。
您使用的是 v12 吗?我希望如此,它与以前版本的某些语法有所不同,10 月将不再支持 - 所以我建议尽快更改。
任何带有 .get 的内容都必须替换为 .cache.get - 如 v11 to v12 updater guide.
这将使您的代码成为 bot.guilds.cache.get(<ServerGuildID>).members.cache.get(<MemberID>).roles.add(<RoleID>)
我对您的代码进行了全面整理并更改了以下行:
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>');
我实际上不太了解编程,但我正在尝试制作一个 discord 机器人,它在用户的 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>)
行有问题,但编程知识不够,无法解决。
您使用的是 v12 吗?我希望如此,它与以前版本的某些语法有所不同,10 月将不再支持 - 所以我建议尽快更改。
任何带有 .get 的内容都必须替换为 .cache.get - 如 v11 to v12 updater guide.
这将使您的代码成为 bot.guilds.cache.get(<ServerGuildID>).members.cache.get(<MemberID>).roles.add(<RoleID>)
我对您的代码进行了全面整理并更改了以下行:
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>');