discord.js Linkfilter TypeError:无法读取 null 的属性“角色”

时间:2021-03-23 21:05:17

标签: javascript discord discord.js

我的链接过滤器系统出现错误。某些角色无法正常工作。

https://sourceb.in/pwvz5xjucp

这是我得到的错误:

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

1 个答案:

答案 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')