Moderation Py
Moderation Py
js');
const fs = require('fs').promises;
class Moderation {
constructor(client) {
this.client = client;
this.muteRoles = new Map();
this.loadData();
}
async loadData() {
try {
this.muteRoles = new Map(Object.entries(JSON.parse(await
fs.readFile(MUTE_FILE, 'utf-8'))));
} catch (error) {
console.error('Error loading mute roles:', error);
}
}
async saveData() {
try {
await fs.writeFile(MUTE_FILE,
JSON.stringify(Object.fromEntries(this.muteRoles)));
} catch (error) {
console.error('Error saving mute roles:', error);
}
}
try {
await member.ban({ reason });
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TICK} User Banned`)
.setDescription(`${EMOJI_INFO} **${member.user.tag}** has been
banned.\n${EMOJI_INFO} **Reason:** ${reason}`)
.setColor('RED');
await message.channel.send({ embeds: [embed] });
} catch (error) {
message.reply(`${EMOJI_CROSS} Failed to ban member: ${error.message}`);
}
}
try {
const user = await this.client.users.fetch(userId);
await message.guild.members.unban(user);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TICK} User Unbanned`)
.setDescription(`${EMOJI_INFO} **${user.tag}** has been unbanned.`)
.setColor('GREEN');
await message.channel.send({ embeds: [embed] });
} catch (error) {
message.reply(`${EMOJI_CROSS} Failed to unban user: ${error.message}`);
}
}
try {
await member.kick(reason);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TICK} User Kicked`)
.setDescription(`${EMOJI_INFO} **${member.user.tag}** has been
kicked.\n${EMOJI_INFO} **Reason:** ${reason}`)
.setColor('ORANGE');
await message.channel.send({ embeds: [embed] });
} catch (error) {
message.reply(`${EMOJI_CROSS} Failed to kick member: $
{error.message}`);
}
}
try {
await member.roles.add(muteRole);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TIMER} User Muted`)
.setDescription(
`${EMOJI_INFO} **${member.user.tag}** has been muted.\n` +
`${EMOJI_INFO} **Reason:** ${reason}\n` +
`${EMOJI_TIMER} **Duration:** ${duration === 0 ? 'Permanent' :
`${duration} seconds`}`
)
.setColor('GREY');
await message.channel.send({ embeds: [embed] });
if (duration > 0) {
setTimeout(async () => {
try {
await member.roles.remove(muteRole);
message.channel.send(`${EMOJI_TICK} **${member.user.tag}**
has been unmuted after ${duration} seconds.`);
} catch (error) {
console.error('Failed to unmute member:', error);
}
}, duration * 1000);
}
} catch (error) {
message.reply(`${EMOJI_CROSS} Failed to mute member: $
{error.message}`);
}
}
try {
if (member.roles.cache.has(muteRole.id)) {
await member.roles.remove(muteRole);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TIMER} User Unmuted`)
.setDescription(`${EMOJI_INFO} **${member.user.tag}** has been
unmuted.`)
.setColor('GREEN');
await message.channel.send({ embeds: [embed] });
} else {
message.reply(`${EMOJI_CROSS} This user is not muted!`);
}
} catch (error) {
message.reply(`${EMOJI_CROSS} Failed to unmute member: $
{error.message}`);
}
}
try {
const deleted = await message.channel.bulkDelete(amount + 1);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TICK} Messages Purged`)
.setDescription(`${EMOJI_INFO} **${deleted.size - 1}** messages
were deleted.`)
.setColor('BLUE');
const msg = await message.channel.send({ embeds: [embed] });
setTimeout(() => msg.delete(), 5000);
} catch (error) {
message.reply(`${EMOJI_CROSS} Failed to delete messages: $
{error.message}`);
}
}
try {
const messages = await message.channel.messages.fetch({ limit: 100 });
const userMessages = messages.filter(m => m.author.id ===
member.id).first(amount);
await message.channel.bulkDelete(userMessages);
async purgeBots(message) {
if (!message.member.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)) {
return message.reply(`${EMOJI_CROSS} You don't have permission to
delete messages!`);
}
try {
const messages = await message.channel.messages.fetch({ limit: 100 });
const botMessages = messages.filter(m => m.author.bot);
await message.channel.bulkDelete(botMessages);
module.exports = Moderation;