【发布时间】:2021-10-12 10:49:45
【问题描述】:
我编写了这段代码来记录发送到我的机器人的 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”频道类型不再是“dm”而是“DM”,所以我将其更改为我的代码,但它仍然无法正常工作,我真的不知道为什么。
【问题讨论】:
-
你调试了什么?确认您的
messageCreate事件正在发出并检查 if 语句是否签出 -
我已成功重现您的问题,但不知道为什么会发生。我认为这是因为您缺少意图
DIRECT_MESSAGES。我补充说,但仍然没有...messageCreate没有完全触发...(在行会中工作) -
是的,我也认为问题出在事件中,也许 dms 发出这些类型事件的方式发生了变化,但我不确定,我也不知道
-
以某种方式工作,但我不确定它是否是您想要的。机器人必须首先向用户发送至少一个 DM。然后
messageCreate照常开火。不确定是否有办法解决这个问题。我会调查的。 -
我已经在我的回答中为你的问题写了一个完整的解决方案,你可以去看看。
标签: javascript node.js discord discord.js