gpt4 book ai didi

javascript - 当我向我的机器人发送 DM 时,事件 messageCreate 没有触发/发射(discord.js v13)

转载 作者:行者123 更新时间:2023-12-04 14:29:46 26 4
gpt4 key购买 nike

我制作了这段代码来记录发送到我的机器人的 DM:

client.on('messageCreate', async message => {

if (message.author.bot) return;

const attachment = message.attachments.first()

if (message.channel.type === 'DM') {
console.log(message.content)

const dmLogEmbed = new MessageEmbed()
.setColor("RANDOM")
.setTitle(`${message.author.tag} dmed the bot and said: `)
.setDescription(message.content)
.setFooter(`User's id: ${message.author.id}`)

if (message.attachments.size !== 0) {
dmLogEmbed.setImage(attachment.url)

}

client.channels.fetch("852220016249798756").then((channel) => {

channel.send({ embeds: [dmLogEmbed] })

})
}

});
但是当更新到 discord.js v13 时它不再起作用了,因为我理解唯一的变化是“dm” channel 类型不再是“dm”而是“DM”,所以我在我的代码中更改了它,但它仍然无法正常工作,我真的不知道为什么。

最佳答案

确保您拥有 DIRECT_MESSAGES在您的客户的意图。

const client = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES", "DIRECT_MESSAGES"] });
Discord API v8 中有一个重大变化。引用见 here .

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.


所以我们需要启用部分 CHANNEL也是。请记住,在处理 partial data 时,你经常想 获取 数据,因为它不完整。但是,如果您使用 messageCreate,这似乎不是您的情况。事件。 message收到的不是部分的,也不是 message.channel .要检查某些内容是否不完整,您可以使用 .partial属性(property)。例如 Message.partial Channel.partial .
const client = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES", "DIRECT_MESSAGES"], partials: ["CHANNEL"] });
现在它应该像旧的 discord.js v12 一样工作。

关于javascript - 当我向我的机器人发送 DM 时,事件 messageCreate 没有触发/发射(discord.js v13),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68700270/

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