Javascript 反应角色不和谐JS
我试图将反应角色编码到我的机器人中,但我在消息ID和反应ID方面遇到了问题。我遇到的问题是,当我第一次发布此消息时,message.id与某人对该消息做出反应时的response.message.id有所不同,即使它是完全相同的消息。消息的id从消息的发布到用户的反应会发生变化,这有什么原因吗?这是我的密码Javascript 反应角色不和谐JS,javascript,discord,discord.js,chatbot,Javascript,Discord,Discord.js,Chatbot,我试图将反应角色编码到我的机器人中,但我在消息ID和反应ID方面遇到了问题。我遇到的问题是,当我第一次发布此消息时,message.id与某人对该消息做出反应时的response.message.id有所不同,即使它是完全相同的消息。消息的id从消息的发布到用户的反应会发生变化,这有什么原因吗?这是我的密码 async function ReactionRoles(client){ client.on("messageReactionAdd", async (rea
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
}
}
});
})
}
reactionScheme
的定义是什么?reactionScheme是mongoDB中的一个模式,我使用它来存储guildid、channelid和messageid