反应角色 Discord JS

时间:2021-05-15 20:41:23

标签: javascript discord discord.js chatbot

我正在尝试将反应角色编码到我的机器人中,但我在处理消息 ID 和反应 ID 时遇到问题。我遇到的问题是当我第一次发布这条消息时的 message.id 与有人对消息做出反应时的 react.message.id 有某种不同,即使它是完全相同的消息。是否有任何原因为什么消息的 id 以某种方式从消息的发布到用户的反应发生了变化?这是我的代码。

async function ReactionRoles(client){

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

        acceptablerankemojis = ["Radiant_Valorant", "Immortal_Valorant", "Diamond_Valorant", "Platinium_Valorant", "Gold_Valorant", "Silver_Valorant", "Bronze_Valorant", "Iron_Valorant"]

        if (reaction.message.partial){await reaction.message.fetch()};
        if (reaction.partial){await reaction.fetch()};
        if (user.bot == true) {return};
        if (!reaction.message.guild) {return};
        if (acceptablerankemojis.includes(reaction.emoji.name) == false){
                
            user.send(`**That is not a valid reaction, please only use the reactions listed.**`)
            reaction.remove().catch(error => {

                console.log("There was an error removing the reactions.")
            })
        }

        const getMessage = await reactionScheme.find({

        }, {
    
            name: 1,
            guildId: 1,
            channelId: 1,
            messageId: 1
        })

        getMessage.forEach(async element => {

            console.log("Arrived between")
            console.log(element.messageId)
            console.log(reaction.message.id)
            
            if (element.messageId == reaction.message.id){

                console.log("Arrived2")
                var name = element.name
                var guildId = element.guildId
                switch (name){

                    case "ValorantRanks":
                        switch(guildId){

                            case "814021508052942870":

                                console.log("Arrived 3")
                                const radiantrole = reaction.message.guild.roles.cache.find(role => role.name === "Radiant");
                                const immortalrole = reaction.message.guild.roles.cache.find(role => role.name === "Immortal");
                                const diamondrole = reaction.message.guild.roles.cache.find(role => role.name === "Diamond");
                                const platinumrole = reaction.message.guild.roles.cache.find(role => role.name === "Platinum");
                                const goldrole = reaction.message.guild.roles.cache.find(role => role.name === "Gold");
                                const silverrole = reaction.message.guild.roles.cache.find(role => role.name === "Silver");
                                const bronzerole = reaction.message.guild.roles.cache.find(role => role.name === "Bronze");
                                const ironrole = reaction.message.guild.roles.cache.find(role => role.name === "Iron");
    
                                switch(reaction.emoji.name){

                                    case "Radiant_Valorant":
                                    await reaction.message.guild.members.cache.get(user.id).roles.add(radiantrole)
                                    break
                                    case "Immortal_Valorant":
                                    await reaction.message.guild.members.cache.get(user.id).roles.add(immortalrole)
                                    break
                                    case "Diamond_Valorant":
                                    await reaction.message.guild.members.cache.get(user.id).roles.add(diamondrole)
                                    break
                                    case "Platinium_Valorant":
                                    await reaction.message.guild.members.cache.get(user.id).roles.add(platinumrole)
                                    break
                                    case "Gold_Valorant":
                                    await reaction.message.guild.members.cache.get(user.id).roles.add(goldrole)
                                    break
                                    case "Silver_Valorant":
                                    await reaction.message.guild.members.cache.get(user.id).roles.add(silverrole)
                                    break
                                    case "Bronze_Valorant":
                                    await reaction.message.guild.members.cache.get(user.id).roles.add(bronzerole)
                                    break
                                    case "Iron_Valorant":
                                    await reaction.message.guild.members.cache.get(user.id).roles.add(ironrole)
                                    break
                                }
                            break
                        }
                    break
                }
            }
        });
    })
} 

0 个答案:

没有答案