Javascript 无法读取属性';角色';空的

Javascript 无法读取属性';角色';空的,javascript,node.js,discord.js,roles,Javascript,Node.js,Discord.js,Roles,我希望我的机器人向加入我的服务器的用户发送私人消息 为此,我使用了: client.on('guildMemberAdd', member => { const channel = member.guild.channels.find(ch => ch.name === 'benvenuto'); channel.send(`Date il benvenuto a ${member}!`); member.send('test'); }); 一旦用户加入服务器,我就

我希望我的机器人向加入我的服务器的用户发送私人消息

为此,我使用了:

 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)
}}

如果我删除了发送私人消息的部分,我不会得到这个错误。可能是什么?

我认为你在会员身上找不到这样的角色。 您可以在公会上使用
.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
}

但是我确实建议您为此单独创建一个commad,其中使用args或其他东西来定义您希望在一个通道中增加多少容量,这是令人困惑的。

这意味着
消息。member
null
在代码的这一部分之前发生了一些事情。实际上之前没有发生太多事情。事实上,当我使用命令
.del100
(或者当我删除发送消息的部分)时,它工作正常,我没有收到这个错误。我使用了
if(message.member.roles.find(r=>r.name==“Admin”)| | message.member.roles.find(r=>r.name==“Mod”)){
在另一个bot中,它也可以正常工作。Message.member只有在消息来自公会时才可用。bot是否可能接收到直接消息?无论如何,在对其进行操作之前,您需要验证成员并确保其不为null。不,bot没有接收任何直接消息。要检查该成员是否为null,我使用d
client.on('message',message=>{if(message.member){console.log('test')}}
成员不是空的。我也使用了
if(message.member.roles){
,同样的结果。但是,一旦用户加入服务器,它就会给出上面的错误。(我忘了提到bot成功地将私有消息发送给用户,但由于上述错误而崩溃)