Discord.js 每当用户向Discord Bot发送dm时,Discord Bot就会关闭

Discord.js 每当用户向Discord Bot发送dm时,Discord Bot就会关闭,discord.js,Discord.js,我的机器人保存聊天日志,在有人对机器人进行dms之前,它可以完美地工作。下面是记录消息的代码 console.log(message.author.username, "||", message.channel.name, "-", message.content); let channel = message.channel.name; var readmessagefile = fs.readFileSync('./tx

我的机器人保存聊天日志,在有人对机器人进行dms之前,它可以完美地工作。下面是记录消息的代码

console.log(message.author.username, "||", message.channel.name, "-", message.content);
        let channel = message.channel.name;
        var readmessagefile = fs.readFileSync('./txt-files/logs.txt', 'utf-8');
        var writemessagefile = fs.writeFileSync('./txt-files/logs.txt', 'Time - ' +
        message.createdAt + ' Channel: ' + channel + " ||" + ' User - ' + message.member.user.username + ': ' +
        message.content + "\n" + readmessagefile);
我正试图找出一种完全忽略dms的方法,这样它就不会把任何事情搞砸

以下是错误:

C:\Documents\Projects\DiscordBot\commands\logs.js:11
        message.createdAt + ' Channel: ' + channel + " ||" + ' User - ' + message.member.user.username + ': ' +
                                                                                         ^

TypeError: Cannot read property 'user' of null

您没有在对象成员中启动用户字段(为空),因为它是var消息中的一个字段。

根据文档:

将消息的作者表示为公会成员。仅当消息来自作者仍然是成员的公会时才可用

问题是DMs不是在公会中发送的,因此
message.member
返回
null
。您应该使用还具有属性且全局可用的

message.author
技术上返回相同的内容<代码>消息。作者是消息作者的用户对象<代码>消息。成员是消息作者的GuildMember对象
GuildMember.user
是GuildMember的用户对象

它们都返回相同的东西,但其中一个需要额外的步骤才能返回

Author>>用户(message.Author)
Author>>GuildMember>>用户(message.member.User)
此外,您还可以使用

var writemessagefile=fs.writeFileSync(
“./txt文件/logs.txt”,
`时间-${message.createdAt}频道:${Channel}| |用户-${message.author.username}:${message.author.content}\n${readmessagefile}`
);

message.member等于null。您需要弄清楚为什么会发生这种情况,然后才能解决问题。可能改为message.user?您没有在object
member
中启动
user
字段(它是空的),它是var
message
中的一个字段。你能给我们看更多的代码吗?可能是在创建
消息之后的什么时候?@cs641311我将message.member.user.username替换为message.author.username,它解决了我的问题。谢谢你给我指引了正确的方向。