【问题标题】:Discord.JS Reaction RolesDiscord.JS 反应角色
【发布时间】:2021-02-07 20:12:45
【问题描述】:

我不知道为什么我的反应角色代码不起作用。如果有人可以帮助我,将不胜感激!

client.on('messageReactionAdd', async (reaction, person) => {
    if (reaction.partial) {
        try {
            await reaction.fetch();
        } catch (error) {
            console.error('Something went wrong when fetching the message: ', error);
            return;
        };
    };

    if (reaction.emoji.name == ':tools:') {
        if (reaction.message.id === '769855387394375681')
        var server = client.guilds.cache.get('769100711593771038');
        let personMember = server.members.cache.get(person);
        const devRole = server.roles.cache.get('769428024609079319')
        personMember.roles.add(devRole);
    };

});

client.on('message', message => {
    return; //For now, gotta code more stuff later
});

消息功能用于缓存消息,以便机器人可以检测对该消息的反应,但如果确实需要,Idk。

也没有错误,只是不会给我这个角色。

【问题讨论】:

  • 首先,表情符号名称不包括两边的冒号。它应该只是tools。其次,看起来您应该结合您的两个 if 语句:if (reaction.emoji.name == 'tools' && reaction.message.id === '769855387394375681') {。如果您已经按 ID 进行比较,则不需要按名称进行比较,但任何一种方式都可以。

标签: javascript node.js discord discord.js


【解决方案1】:

您需要在 if 语句中指定一个表情符号 ID,而不仅仅是 :tools:。您可以通过在 Discord 中输入表情符号,然后在其前面加上反斜杠来获得此信息。发送消息,您将收到类似<:tools:213812938712938713> 的信息。数字部分是您的 ID。

编辑:你需要做if (reaction.emoji.id === 'IDHERE')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2020-08-30
    • 2020-07-06
    • 2021-01-07
    相关资源
    最近更新 更多