我正在尝试创建一个 DM 验证系统,如果成员将 DM 发送给机器人,他就会被接受。
....
const respectrumServer = client.guilds.cache.get('782347082362912768');
client.on('message', message => {
if (message.author.equals(client.user)) return;
var authorid = message.author.id;
if (message.toString().toLowerCase() === "lonely guy is the best") {
if (message.channel.type == "dm") {
if(respectrumServer.members.cache.has(authorid)){
//error is here ^
var verifiedrole = member.respectrumServer.roles.cache.find(role => role.id === '782348009362161714');
var notverifiedrole = member.respectrumServer.roles.cache.find(role => role.id === '797218539563122688');
member.roles.add(verifiedrole);
member.roles.remove(notverifiedrole);
authorid.send('You have been verified');
}
else{
authorid.send('You are not a member of Respectrum');
}
}
else{
message.channel.send('I know, right?');
}
}
else{
return;
}
});
我把很多东西都改了,比如 message.author
到 message.author.id
和 members.cache.find(authorid)
到 members.cache.has(authorid)
我不知道是什么问题。
答案 0 :(得分:0)
这是因为您试图在机器人准备就绪之前获取 respectrumServer
服务器。
当您收到新消息时,请改用以下代码来定义它:
client.on('message', async message => {
if (message.author.equals(client.user)) return;
const respectrumServer = client.guilds.cache.get('782347082362912768');
var authorid = message.author.id;
if (message.toString().toLowerCase() === "lonely guy is the best") {
if (message.channel.type == "dm") {
const member = await respectrumServer.members.fetch(authorid).catch(() => {});
if(member){
//error is here ^
var verifiedrole = member.respectrumServer.roles.cache.find(role => role.id === '782348009362161714');
var notverifiedrole = member.respectrumServer.roles.cache.find(role => role.id === '797218539563122688');
member.roles.add(verifiedrole);
member.roles.remove(notverifiedrole);
authorid.send('You have been verified');
}
else{
authorid.send('You are not a member of Respectrum');
}
}
else{
message.channel.send('I know, right?');
}
}
else{
return;
}
});