类型错误:无法读取 null 的属性(读取"id")。反诈骗系统



我写了一个反欺诈系统,但在启动后我得到了一个错误

AntiScam.js

onst { Message, MessageEmbed } = require("discord.js");
const config = require("../../Structures/config.json");
const DB = require("../../Structures/Schemas/AntiScamDB");
module.exports = {
name: "messageCreate",
/**
*
* @param {Message} message
*/
async execute(message) {
DB.findOne({ Guild: message.guild.id }, async (err, data) => {
if (!data) return;
if(err) throw err;
const array = require(`../../Structures/Valdiation/ScamLink.json`);
if (array.some((word) => message.content.toLowerCase().includes(word))) {
message.delete();
const Ex = new MessageEmbed()
.setTitle("Scam detected")
.setColor(config.Warna)
.setThumbnail(`${message.author.displayAvatarURL({ dynamic: true })}`)
.setDescription(`Please don't send any scam messages. Thank you.`)
.addField(
"User:",
`\`\`\`${message.author.tag} (${message.author.id})\`\`\``
)
.addField("Message Content:", `\`\`\`${message.content}\`\`\``)
.setTimestamp();
await message.guild.channels.cache.get(data.Channel).send({embeds: [Ex]});
}
});
},
};

错误:

C:UsersekmrrDesktopsqueakEventsClientAntiScam.js:12
DB.findOne({ Guild: message.guild.id }, async (err, data) => {
^
TypeError: Cannot read properties of null (reading 'id')
at Object.execute (C:UsersekmrrDesktopsqueakEventsClientAntiScam.js:12:39)
at Client.<anonymous> (C:UsersekmrrDesktopsqueakStructuresHandlersEvents.js:22:54)
at Client.emit (node:events:406:35)
at MessageCreateAction.handle (C:UsersekmrrDesktopsqueaknode_modulesdiscord.jssrcclientactionsMessageCreate.js:26:14)
at Object.module.exports [as MESSAGE_CREATE] (C:UsersekmrrDesktopsqueaknode_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:UsersekmrrDesktopsqueaknode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:351:31)
at WebSocketShard.onPacket (C:UsersekmrrDesktopsqueaknode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:UsersekmrrDesktopsqueaknode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:301:10)
at WebSocket.onMessage (C:UsersekmrrDesktopsqueaknode_moduleswslibevent-target.js:199:18)
at WebSocket.emit (node:events:394:28)

请帮忙!

在数据库构建之初,出现了json,但在编写命令后,bot失败了:(

老实说,我读不清楚你的代码,但我可以告诉你,你发送给DB.findOnemessage.guildnull

我相信为了安全起见,你可以做一些类似的事情

message.hasOwnProperty('guild') &&
message.guild.hasOwnProperty('id') &&
DB.findOne({ Guild: message.guild.id }, async (err, data) => {
...

if (message.guild !== null)
DB.findOne({ Guild: message.guild.id }, async (err, data) => {
...

希望能有所帮助。

最新更新