我的链接过滤器系统出现错误。某些角色无法正常工作。
这是我得到的错误:
(node:12236) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'roles' of null
at Client.<anonymous> (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\index.js:134:24)
at Client.emit (events.js:327:22)
at MessageCreateAction.handle (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\ws\lib\event-target.js:132:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\ws\lib\websocket.js:825:20)
at Receiver.emit (events.js:315:20)
at Receiver.dataMessage (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\ws\lib\receiver.js:437:14)
at Receiver.getData (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\ws\lib\receiver.js:367:17)
at Receiver.startLoop (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\ws\lib\receiver.js:143:22)
at Receiver._write (C:\Users\eFhii\Desktop\Venetic eSports\development_discord\node_modules\ws\lib\receiver.js:78:10)
at doWrite (_stream_writable.js:403:12)
答案 0 :(得分:1)
因为 message.member 返回 GuildMember 在这种情况下没有成员。
那是什么意思?这意味着有人在私人聊天 (DM) 中向机器人发送了消息
要解决此问题,只需忽略不在服务器中的消息:
if(!message.guild) return;
所以你的代码将是这样的:\
//Linkfilter
bot.on("message", async message => {
if(!message.guild) return;
const mongo = require('./mongo')
const warnSchema = require('./models/warn-schema')