目前我使用的是最新版本Discord.js (v13.1.0).
我希望能够检测某条消息是否是 DM。我尝试制作一个messageCreate
事件并执行 if 语句来检查通道是否为 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]
顺便说一句,事件does work:
client.on('messageCreate', message => {
console.log('Event')
}
我之前也遇到过这个问题;我深入研究了discord.js v12 和 v13 之间的变化并找出了原因。
As seen here on the Discordjs. 指南专门介绍更新之间的重大更改的网页:
在 Discord API v8 及更高版本上,DM 通道不会发出CHANNEL_CREATE
事件,这意味着discord.js 无法自动缓存它们。为了让您的机器人接收 DM,CHANNEL
必须启用部分。
对于处理 DM 消息这一非常重要的功能,该通知很难找到。它只是直接提到CHANNEL_CREATE
事件,但基本上这意味着你的机器人是unable根本无法接收DM,除非CHANNEL
在您的客户端选项中启用了部分。
以下是如何执行此操作的示例:
const client = new Discord.Client({ partials: ["CHANNEL"], intents: [...] });
你需要添加这一点partials
财产给你的Client
构造函数以接收 DM。这样做之后,您的代码将正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)