Как исправить «Проблема с реакциями (перезагрузить бот)» - PullRequest
1 голос
/ 09 мая 2019

У меня проблема с реакцией ответа System.

Я хочу, чтобы, когда пользователь добавляет реакцию, она отвечала на сообщение, за исключением того, что при перезагрузке бота он больше не обнаруживается ботом..

Знаете ли вы, как решить эту проблему?

Вот мой текущий код:

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("✅")))
        }
}

1 Ответ

0 голосов
/ 14 мая 2019

в последней версии discord.js, вы можете использовать Частичные события для достижения этой цели. По документу (https://discord.js.org/#/docs/main/master/topics/partials):

Частицы позволяют вам получать события, которые содержат некэшированные экземпляры, предоставляя структуры, которые содержат очень минимальные данные. Например, если вы должны получить событие messageDelete с некэшированным сообщением, обычно Discord.js отбрасывает событие. С помощью partials вы можете получить событие с помощью объекта 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, которое вы можете использовать для удаления частичных сообщений, когда они вам не нужны.

...