mirror of
https://gitlab.com/upRootNutrition/zookeeper.git
synced 2025-06-15 09:55:12 -05:00
75 lines
3.1 KiB
JavaScript
75 lines
3.1 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
module.exports = {
|
|
name: 'unbaboon',
|
|
description: 'Restore the roles of a user that were previously removed by the baboon command and remove the role with ID 1160622954082738347. If no cached roles are found, assign a default role.',
|
|
async execute(message) {
|
|
const authorizedRoles = ['827303828884946944', '827332588803850270'];
|
|
const userRoles = message.member.roles.cache.map(role => role.id);
|
|
|
|
console.log('User roles:', userRoles); // Debugging line
|
|
console.log('Authorized roles:', authorizedRoles); // Debugging line
|
|
|
|
if (!userRoles.some(role => authorizedRoles.includes(role))) {
|
|
return message.reply('You are not alpha enough to unbaboon other users.');
|
|
}
|
|
|
|
try {
|
|
// Identify the target user
|
|
let target;
|
|
if (message.mentions.members.first()) {
|
|
target = message.mentions.members.first();
|
|
} else if (message.reference) {
|
|
target = await message.channel.messages.fetch(message.reference.messageId).then(msg => msg.member);
|
|
} else {
|
|
return message.reply('Please tag the baboon you wish to rewild.');
|
|
}
|
|
|
|
console.log('Target user identified:', target.user.tag);
|
|
|
|
// Retrieve the bot's own member object
|
|
const botMember = await message.guild.members.fetch(message.client.user.id);
|
|
|
|
// Check if the bot has MANAGE_ROLES permission
|
|
if (!botMember.permissions.has('MANAGE_ROLES')) {
|
|
return message.reply('My kung fu is not strong enough.');
|
|
}
|
|
|
|
const roleID = '1160622954082738347';
|
|
const defaultRoleID = '964354344948494416';
|
|
const role = message.guild.roles.cache.get(roleID);
|
|
const defaultRole = message.guild.roles.cache.get(defaultRoleID);
|
|
|
|
if (!role) {
|
|
return message.reply('Role not found.');
|
|
}
|
|
if (!defaultRole) {
|
|
return message.reply('Default role not found.');
|
|
}
|
|
|
|
const filePath = path.join(__dirname, '../roles_backup.json');
|
|
if (!fs.existsSync(filePath)) {
|
|
return message.reply('No role backup file found.');
|
|
}
|
|
|
|
const rolesBackup = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
|
const rolesArray = rolesBackup[target.id];
|
|
|
|
await target.roles.remove(role);
|
|
if (rolesArray && rolesArray.length > 0) {
|
|
await target.roles.add(rolesArray);
|
|
message.channel.send(`${target.displayName} has been rewilded.`);
|
|
} else {
|
|
await target.roles.add(defaultRole);
|
|
message.channel.send(`${target.displayName} has returned to civilization.`);
|
|
}
|
|
|
|
delete rolesBackup[target.id];
|
|
fs.writeFileSync(filePath, JSON.stringify(rolesBackup, null, 2), 'utf8');
|
|
} catch (error) {
|
|
console.error('An error occurred:', error);
|
|
message.channel.send('There was an error trying to restore the roles.');
|
|
}
|
|
},
|
|
};
|