Javascript “如何修复”;反应问题(重启机器人)“;

Javascript “如何修复”;反应问题(重启机器人)“;,javascript,discord,discord.js,Javascript,Discord,Discord.js,我的回复系统有问题 我希望当用户添加一个反应时,它会回复一条消息,但当bot重新启动时,它不再被bot检测到 你知道如何解决这个问题吗 这是我目前的代码: bot.on(“messageReactionAdd”,函数(messageReaction,用户){ if(messageReaction.message.content==“message”){ if(user.bot){return} messageReaction.message.reply(“它工作正常”) } }) bot.on(

我的回复系统有问题

我希望当用户添加一个反应时,它会回复一条消息,但当bot重新启动时,它不再被bot检测到

你知道如何解决这个问题吗

这是我目前的代码:

bot.on(“messageReactionAdd”,函数(messageReaction,用户){
if(messageReaction.message.content==“message”){
if(user.bot){return}
messageReaction.message.reply(“它工作正常”)
}
})
bot.on(“消息”,功能(消息){
if(message.content.startsWith(前缀+“test”)){
message.delete()
message.member.createDM()。然后(m=>m.send(“message”)。然后(m=>m.react(“✅")))
}
}

在最新版本的discord.js上,您可以使用部分事件来完成此操作。 根据文件():

Partials允许您接收包含未缓存实例的事件,并提供包含极少数据的结构。例如,如果要接收带有未缓存消息的messageDelete事件,通常Discord.js会丢弃该事件。使用Partials,您可以接收带有仅包含I的message对象的事件D

你需要做的是

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.")
  }
})
在执行此操作时,必须小心使用
客户端.on(“message”,…)
调用,以避免访问不可用的数据或方法。
有一个布尔值
消息。partial
,您可以在不需要时使用它来丢弃部分消息。

discord.js似乎只在当前缓存通道时处理这些事件。由于DMs只是为机器人临时缓存,而不是持续的过度重启,它将不再识别通道。@Minn好的,但我该怎么做显然,discord.js允许您访问原始事件,然后您可以使用这些原始事件,它们只有一个可用的通道id和消息id。