Discord Bot:从JSON文件中添加角色



我想在Discord上的JSON文件中添加或删除反应角色。我希望当用户点击表情符号时,从链接角色和表情符号的JSON文件中添加相应的角色。

目前我的代码可以工作,但并不干净。

这是我的代码:

const Discord = require('discord.js');
const client = new Discord.Client({ partials: ['MESSAGE', 'CHANNEL', 'REACTION'] });
const { token }  = require('./config.json');
const Roles = require('/roles.json');
client.on("ready", () => {
console.log("Bot opérationnel");
});
client.on('message', message => {
if (message.content === 'Choisir un rôle :') {
const reactionEmoji1 = message.guild.emojis.cache.find(emoji => emoji.name === 'FR');
const reactionEmoji2 = message.guild.emojis.cache.find(emoji => emoji.name === 'UK');
message.react(reactionEmoji1);
message.react(reactionEmoji2);
}
});

client.on("messageReactionAdd", (reaction, user) => {
if(user.bot) return;
console.log("Réaction ajoutée");
if(reaction.message.id === "1037314191163412573"){
if(reaction.emoji.name === "FR"){
var member =  reaction.message.guild.members.cache.find(member => member.id === user.id); // Va récuperer le membre du serveur 
member.roles.add("1036583426620399647").then (mbr => { // Assigne le role
console.log("Role attribué avec succès pour" + mbr.displayName);
})
.catch(err => {
console.log("Le role n'a pas pu etre attribué :" + err);
});
}
if(reaction.emoji.name === "UK"){
var member =  reaction.message.guild.members.cache.find(member => member.id === user.id); // Va récuperer le membre du serveur 
member.roles.add("1036583684247134208").then (mbr => { // Assigne le role
console.log("Role attribué avec succès pour" + mbr.displayName);
})
.catch(err => {
console.log("Le role n'a pas pu etre attribué :" + err);
});
}
}
});
client.on("messageReactionRemove", (reaction, user) => {
if(user.bot) return;
console.log("Réaction supprimée");
if(reaction.message.id === "1037314191163412573"){
if(reaction.emoji.name === "FR"){
var member =  reaction.message.guild.members.cache.find(member => member.id === user.id); // Va récuperer le membre du serveur 
member.roles.remove("1036583426620399647").then (mbr => { // Assigne le role
console.log("Role supprimé avec succès pour" + mbr.displayName);
}).catch(err => {
console.log("Le role n'a pas pu etre attribué :" + err);
});
}
if(reaction.emoji.name === "UK"){
var member =  reaction.message.guild.members.cache.find(member => member.id === user.id); // Va récuperer le membre du serveur 
member.roles.remove("1036583684247134208").then (mbr => { // Assigne le role
console.log("Role supprimé avec succès pour" + mbr.displayName);
}).catch(err => {
console.log("Le role n'a pas pu etre attribué :" + err);
});
}
}
});
client.login(token);

这是JSON文件:

{
"message": "1037314191163412573",
"channel": "1037311658416152616",
"reactions": [
{
"emoji": "FR",
"role": "1036583426620399647"               
},
{
"emoji": "UK",
"role": "1036583684247134208"
}
]
}  

您可以循环查看对象中的每个值并检查您存储的每个表情符号,而不是直接使用if语句检查每个表情符号。

如果你在对象中添加更多表情符号,只要其结构一致,这应该会起作用。

示例:

// assuming `data` is your object
for(r of data.reactions) {
if(reaction.emoji.name === r.emoji) {
let member = reaction.message.guild.members.cache.find(member => member.id === user.id)
member.roles.add(r.role).then(() => {
// etc
})
}
}

Voici le code qui foctionne:

client.on("messageReactionAdd", (reaction, user) => {
if (user.bot) return;
if (reaction.message.id === role_list.message) {
let member = reaction.message.guild.members.cache.find(member => member.id === user.id);
for (let i = 0; i < role_list.reactions.length; i++) {
let r = role_list.reactions[i];
if (reaction.emoji.name === r.emoji) {
member.roles.add(r.role).then(mbr => {
console.log("Role attribué avec succès pour " + mbr.displayName);
}).catch(err => {
console.log("Le role n'a pas pu etre attribué :" + err);
});
}
}

}
});```

最新更新