問題描述
目前我使用的是最新版本的 Discord.js (v13.1.0).
Currently I am using the latest version of Discord.js (v13.1.0).
我希望能夠檢測某條消息是否是 DM.我嘗試制作 messageCreate
事件并執行 if 語句來檢查頻道是否為 DM
I want to be able to detect if a certain message is a DM. I tried making a messageCreate
event and did an if statement to check if the channel is a DM
client.on('messageCreate', message => {
if (message.channel.type == 'DM') {
console.log('Dm recieved!')
}
})
由于某種原因,這不起作用.所以我不知道會發生什么.
This for some reason didn't work. So I have no idea what will.
這是我的意圖
:
[Intents.FLAGS.GUILDS、Intents.FLAGS.GUILD_MESSAGES、Intents.FLAGS.GUILD_MESSAGE_REACTIONS、Intents.FLAGS.DIRECT_MESSAGES]
順便說一句,事件確實起作用了:
Btw, the event does work:
client.on('messageCreate', message => {
console.log('Event')
}
推薦答案
我之前也遇到過這個問題;我深入研究了 discord.js v12 和 v13 之間的變化并找出了原因.
I had this issue earlier as well; I dug into the changes between discord.js v12 and v13 and figured out why.
如 這里在 rel="nofollow noreferrer">discordjs.guide 專門介紹更新之間的重大更改的網頁:
As seen here on the discordjs.guide webpage dedicated to the breaking changes between the updates:
在 Discord API v8 及更高版本中,DM 頻道不會發出 CHANNEL_CREATE
事件,這意味著 discord.js 無法自動緩存它們.為了讓您的機器人接收 DM,必須啟用 CHANNEL
部分.
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, theCHANNEL
partial must be enabled.
對于處理 DM 消息的非常重要的功能,該通知很難找到.它只直接提到了 CHANNEL_CREATE
事件,但基本上它的意思是您的機器人 無法 根本無法接收 DM,除非 CHANNEL
部分是在您的客戶端選項中啟用.
For the very important feature of handling DM messages, that notice was pretty difficult to find. It only directly mentions the CHANNEL_CREATE
event, but basically what it means is that your bot is unable to receive DMs at all unless the CHANNEL
partial is enabled in your client options.
以下是您將如何做到這一點的示例:
Here is an example of how you would do that:
const client = new Discord.Client({ partials: ["CHANNEL"], intents: [...] });
您需要將該 partials
屬性添加到您的 Client
構造函數中才能接收 DM.這樣做后,您的代碼將正常工作.
You need to add that partials
property to your Client
constructor in order to receive DMs. After doing so, your code will work properly.
這篇關于如何在 Discord.js 中檢查消息是否為 DM?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!