Discord.js 每当用户向Discord Bot发送dm时,Discord Bot就会关闭
我的机器人保存聊天日志,在有人对机器人进行dms之前,它可以完美地工作。下面是记录消息的代码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
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?您没有在objectmember
中启动user
字段(它是空的),它是varmessage
中的一个字段。你能给我们看更多的代码吗?可能是在创建消息之后的什么时候?@cs641311我将message.member.user.username替换为message.author.username,它解决了我的问题。谢谢你给我指引了正确的方向。