Создаю систему проверки для моего Discord.JS Бот

#node.js #discord #discord.js

#node.js #Discord #discord.js

Вопрос:

Итак, ребята, я на самом деле не новичок в программировании ботов в discord.js но теперь я увидел, что когда я перезапускаю своего бота, он не может обнаружить старые сообщения.

Это мой код:

 client.on("messageReactionAdd", (reaction, user) => {

    if(reaction.emoji.name == "✅" amp;amp; reaction.message.channel.id === '793528912751231015') {
    
        try {
            const role = reaction.message.channel.guild.roles.cache.find(role => role.name == "『🙎‍♂️』אזרח");
            reaction.message.guild.member(user).roles.add(role);
        } catch {
            console.log('Error : can't add the role');
        }
      
    }
});
 

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

Ответ №1:

Вы можете проверить, является ли реакция частичной или нет, используя <Reaction>.partial свойство. Если оно является частичным, то мы можем вызвать reaction.fetch();

Вот пример:

 client.on('messageReactionAdd', async (reaction, user) => {
    if (reaction.partial) {
        try {
            await reaction.fetch();
        } catch (error) {
            return console.error("Error fetching reaction", error);
        }
    }
    // Your code here
});
 

Вы можете ознакомиться с документами здесь для этого, и вот fetch() метод. Этот пример кода взят из руководства DJS, которое можно найти здесь