我的反应回复系统有问题。
我希望当用户添加一个响应时,它会回复一条消息,只是该机器人重新启动时不再被该机器人检测到。
您知道如何解决此问题吗?
这是我当前的代码:
bot.on("messageReactionAdd", function(messageReaction, user){
if(messageReaction.message.content === "Message"){
if(user.bot){return}
messageReaction.message.reply("It works.")
}
})
bot.on("message", function(message){
if(message.content.startsWith(prefix + "test")){
message.delete()
message.member.createDM().then(m => m.send("Message").then(m => m.react("✅")))
}
}
答案 0 :(得分:0)
在最新版本的discord.js上,您可以使用 Partial Events 来完成此任务。 根据文档(https://discord.js.org/#/docs/main/master/topics/partials):
部分允许您接收包含未缓存实例的事件,从而提供包含非常少量数据的结构。例如,如果要接收带有未缓存消息的messageDelete事件,通常Discord.js会丢弃该事件。通过使用partials,您可以通过仅包含一个ID的Message对象来接收事件。
您需要做的是
const Discord = require('discord.js');
// add "partials" in the bot options to enable partial events
const client = new Discord.Client({"partials": ['CHANNEL', 'MESSAGE']});
[...]
client.on("messageReactionAdd", async function(messageReaction, user){
// fetch message data if we got a partial event
if (messageReaction.message.partial) await messageReaction.message.fetch();
if(messageReaction.message.content === "Message"){
if(user.bot){return}
messageReaction.message.reply("It works.")
}
})
为此,您在进行client.on("message", ...)
调用时必须小心,以免访问不可用的数据或方法。
有一个布尔值message.partial
,您可以在不需要时使用它来丢弃部分消息。