为我的 Discord.JS 机器人制作验证系统

时间:2021-01-30 19:35:27

标签: node.js discord discord.js

伙计们,我并不是在 discord.js 中进行机器人编程的真正初学者,但是,我现在已经看到,当我重新启动我的机器人时,它无法检测到旧消息。

这是我的代码:

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

    if(reaction.emoji.name == "✅" && 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');
        }
      
    }
});

语言无关紧要,但问题是 T 尝试了各种方法来缓存来自特定频道的旧消息。但我真的找不到办法做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以使用 <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
});

您可以查看相关文档 hereherefetch() 方法。此示例代码来自 DJS 指南,可在 here