Discord.js 如何在DIscord bot中基于DM消息向用户添加角色
我想写一个不和谐机器人。当用户将DM分配给bot时,此bot会将角色分配给用户。代码如下所示。但是message.member为空Discord.js 如何在DIscord bot中基于DM消息向用户添加角色,discord.js,Discord.js,我想写一个不和谐机器人。当用户将DM分配给bot时,此bot会将角色分配给用户。代码如下所示。但是message.member为空 bot.on('message', async msg => { if (msg.channel.type != "dm") { return; } let message = msg.content; if (message.substring(0, 1) == '!') { var args = message.substring(1).s
bot.on('message', async msg => {
if (msg.channel.type != "dm") {
return;
}
let message = msg.content;
if (message.substring(0, 1) == '!') {
var args = message.substring(1).split(' ');
var cmd = args[0];
switch (cmd) {
case 'role':
const guildMember = message.member; (message.member is null)
guildMember.addRole('<@&439191493169643521>');
}
}
bot.on('message',async msg=>{
如果(msg.channel.type!=“dm”){
返回;
}
让message=msg.content;
if(message.substring(0,1)='!'){
var args=message.substring(1.split)(“”);
var cmd=args[0];
开关(cmd){
案例“角色”:
const guildMember=message.member;(message.member为空)
guildMember.addRole(“”);
}
}
您的第一个问题是使用了错误的消息
。您将消息
声明为一个变量,与msg.content
相等,因此我相信您将其误认为是msg
其次,该方法接受一个ID或雪花。因此,您只需将角色的ID粘贴到方法内的引号中即可
即使你进行了这些更改,你仍然会得到一个错误。为什么?因为你的机器人正在读取DM
频道,而不是Guild
频道。所以这样做是行不通的
const guildMember=msg.member;
guildMember.addRole(“”);
我对你的switch语句做了一些调整,使它能够工作
开关(cmd){
案例“角色”:
const guild=client.guilds.get('guild_ID');
//获取向bot发送消息的用户的id
var dmUser=msg.author.id;
//这将在公会中查找用户id
var isMember=guild.members.get(dmUser)
//如果是真的
如果(isMember){
//然后添加角色
isMember.addRole('ROLE_ID');
}否则{
//如果不正确,则向用户发送此消息
msg.reply('你不是帮会的成员')
}
}