45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
// bot/roles.js
|
|
global.syncDiscordRoles = async function(player) {
|
|
if (!EasyAdmin) {
|
|
return;
|
|
}
|
|
var user;
|
|
try {
|
|
var identifiers = await exports[EasyAdmin].getAllPlayerIdentifiers(player);
|
|
for (let identifier of identifiers) {
|
|
if (identifier.search("discord:") != -1) {
|
|
user = await client.users.fetch(identifier.substring(identifier.indexOf(":") + 1));
|
|
}
|
|
}
|
|
if (!user) {
|
|
return false;
|
|
}
|
|
} catch (error) {
|
|
return;
|
|
}
|
|
var roles = [];
|
|
for (const id of client.guilds.cache.keys()) {
|
|
const guild = client.guilds.cache.get(id);
|
|
if (guild.members.cache.has(user.id)) {
|
|
var guildMember = await guild.members.fetch(user.id);
|
|
if (guildMember) {
|
|
roles.push(...guildMember.roles.cache.keys());
|
|
}
|
|
}
|
|
}
|
|
refreshRolesForUser(user, roles);
|
|
};
|
|
exports("syncDiscordRoles", global.syncDiscordRoles);
|
|
if (GetConvar("ea_botToken", "") != "") {
|
|
client.on("guildMemberUpdate", async function(oldMember, newMember) {
|
|
oldRoles = await oldMember.roles.cache.keys();
|
|
newRoles = await newMember.roles.cache.keys();
|
|
for (let role of oldRoles) {
|
|
ExecuteCommand(`remove_principal identifier.discord:${oldMember.id} role:${role}`);
|
|
}
|
|
for (let role of newRoles) {
|
|
ExecuteCommand(`add_principal identifier.discord:${newMember.id} role:${role}`);
|
|
}
|
|
});
|
|
}
|