gpt4 book ai didi

javascript - 如何在 Discord.js 中检查消息是否为 DM?

转载 作者:行者123 更新时间:2023-12-05 00:30:31 24 4
gpt4 key购买 nike

目前我使用的是最新版本的 Discord.js (v13.1.0) .
我希望能够检测某个消息是否是 DM。我尝试制作 messageCreate事件并做了一个 if 语句来检查 channel 是否是 DM

client.on('messageCreate', message => {
if (message.channel.type == 'DM') {
console.log('Dm recieved!')
}
})
由于某种原因,这不起作用。所以我不知道会发生什么。
这是我的intents : [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Intents.FLAGS.DIRECT_MESSAGES]顺便说一句,该事件确实有效:
client.on('messageCreate', message => {
console.log('Event')
}

最佳答案

我之前也遇到过这个问题;我深入研究了 discord.js v12 和 v13 之间的变化并找出了原因。
如所见herediscordjs.guide专门介绍更新之间的重大更改的网页:

On Discord API v8 and later, DM Channels do not emit the CHANNEL_CREATE event, which means discord.js is unable to cache them automatically. In order for your bot to receive DMs, the CHANNEL partial must be enabled.


对于处理 DM 消息的非常重要的功能,该通知很难找到。它只直接提到 CHANNEL_CREATE事件,但基本上这意味着您的机器人根本无法接收 DM,除非 CHANNEL在您的客户端选项中启用了部分。
以下是您将如何执行此操作的示例:
const client = new Discord.Client({ partials: ["CHANNEL"], intents: [...] });
您需要添加 partials属性(property)到您的 Client构造函数以接收 DM。这样做后,您的代码将正常工作。

关于javascript - 如何在 Discord.js 中检查消息是否为 DM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68978438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com