我希望我的机器人向加入我的服务器的用户发送一条私人消息。
为此,我使用了:
client.on('guildMemberAdd', member => {
const channel = member.guild.channels.find(ch => ch.name === 'benvenuto');
channel.send(`Date il benvenuto a ${member}!`);
member.send('test');
});一旦用户加入服务器,我就会收到这个错误:
TypeError: Cannot read property 'roles' of null
at Client.client.on.message (C:\Users\Kikkiu\Desktop\BotTuttofare\index.js:9:19)
[...]错误将我带到代码的这一部分:
if(message.member.roles.find(r => r.name === "Admin") || message.member.roles.find(r => r.name === "Mod")) {
if(!message.author.bot) {
if(message.content == '.del50')
message.channel.bulkDelete(50)
if(message.content == '.del100')
message.channel.bulkDelete(100)
if(message.content == '.del1')
message.channel.bulkDelete(2)
if(message.content == '.del10')
message.channel.bulkDelete(10)
if(message.content == '.del2')
message.channel.bulkDelete(3)
}}如果我删除发送私人消息的部分,我不会得到这个错误。那会是什么呢?
发布于 2020-03-03 16:28:46
我不认为你能在这样的成员中找到角色。你在行会上使用.find() (member.guild.roles.find(r => r.name == "Admin"))
如果您想检查他们是否获得了corect角色,应该可以这样做:
let adminRole = message.guild.roles.get("ADMIN_ROLE_ID") //same with mod role
if (message.member.roles.has(adminRole.id)) {
//If they have admin & mod role they can do this
} else {
//If they do not have the one of the roles, this happens. Either just do return; or do //something like dm them that they don't have roles/permissions
}但是我建议你做一个单独的命令,在这里你使用args或其他东西来定义你想要在一个通道中批量多少,这只会让人困惑。
https://stackoverflow.com/questions/60177814
复制相似问题