0% found this document useful (0 votes)
8 views5 pages

Moderation Py

The document defines a Moderation class for a Discord bot that manages user permissions and actions such as banning, unbanning, kicking, muting, unmuting, and purging messages. It includes methods for loading and saving mute roles from a JSON file, handling permissions, and providing feedback through embedded messages. The class ensures that only users with the appropriate permissions can execute moderation commands and provides error handling for various operations.

Uploaded by

arpitranjan4958
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views5 pages

Moderation Py

The document defines a Moderation class for a Discord bot that manages user permissions and actions such as banning, unbanning, kicking, muting, unmuting, and purging messages. It includes methods for loading and saving mute roles from a JSON file, handling permissions, and providing feedback through embedded messages. The class ensures that only users with the appropriate permissions can execute moderation commands and provides error handling for various operations.

Uploaded by

arpitranjan4958
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

const { MessageEmbed, Permissions } = require('discord.

js');
const fs = require('fs').promises;

const MUTE_FILE = "mute_roles.json";

class Moderation {
constructor(client) {
[Link] = client;
[Link] = new Map();
[Link]();
}

async loadData() {
try {
[Link] = new Map([Link]([Link](await
[Link](MUTE_FILE, 'utf-8'))));
} catch (error) {
[Link]('Error loading mute roles:', error);
}
}

async saveData() {
try {
await [Link](MUTE_FILE,
[Link]([Link]([Link])));
} catch (error) {
[Link]('Error saving mute roles:', error);
}
}

async ban(message, args) {


if (![Link]([Link].BAN_MEMBERS)) {
return [Link](`${EMOJI_CROSS} You don't have permission to ban
members!`);
}

const member = [Link]();


if (!member) return [Link](`${EMOJI_CROSS} Please mention a member
to ban!`);

const reason = [Link](1).join(' ') || 'No reason provided';

try {
await [Link]({ reason });
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TICK} User Banned`)
.setDescription(`${EMOJI_INFO} **${[Link]}** has been
banned.\n${EMOJI_INFO} **Reason:** ${reason}`)
.setColor('RED');
await [Link]({ embeds: [embed] });
} catch (error) {
[Link](`${EMOJI_CROSS} Failed to ban member: ${[Link]}`);
}
}

async unban(message, args) {


if (![Link]([Link].BAN_MEMBERS)) {
return [Link](`${EMOJI_CROSS} You don't have permission to unban
members!`);
}

const userId = args[0];


if (!userId) return [Link](`${EMOJI_CROSS} Please provide a user ID
to unban!`);

try {
const user = await [Link](userId);
await [Link](user);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TICK} User Unbanned`)
.setDescription(`${EMOJI_INFO} **${[Link]}** has been unbanned.`)
.setColor('GREEN');
await [Link]({ embeds: [embed] });
} catch (error) {
[Link](`${EMOJI_CROSS} Failed to unban user: ${[Link]}`);
}
}

async kick(message, args) {


if (![Link]([Link].KICK_MEMBERS)) {
return [Link](`${EMOJI_CROSS} You don't have permission to kick
members!`);
}

const member = [Link]();


if (!member) return [Link](`${EMOJI_CROSS} Please mention a member
to kick!`);

const reason = [Link](1).join(' ') || 'No reason provided';

try {
await [Link](reason);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TICK} User Kicked`)
.setDescription(`${EMOJI_INFO} **${[Link]}** has been
kicked.\n${EMOJI_INFO} **Reason:** ${reason}`)
.setColor('ORANGE');
await [Link]({ embeds: [embed] });
} catch (error) {
[Link](`${EMOJI_CROSS} Failed to kick member: $
{[Link]}`);
}
}

async mute(message, args) {


if (![Link]([Link].MANAGE_ROLES)) {
return [Link](`${EMOJI_CROSS} You don't have permission to mute
members!`);
}

const member = [Link]();


if (!member) return [Link](`${EMOJI_CROSS} Please mention a member
to mute!`);

const duration = parseInt(args[1]) || 0;


const reason = [Link](2).join(' ') || 'No reason provided';

let muteRole = [Link](role => [Link] ===


'Muted');
if (!muteRole) {
try {
muteRole = await [Link]({
name: 'Muted',
reason: 'Created for muting members'
});

[Link](async channel => {


await [Link](muteRole, {
SEND_MESSAGES: false,
ADD_REACTIONS: false
});
});
} catch (error) {
return [Link](`${EMOJI_CROSS} Failed to create mute role: $
{[Link]}`);
}
}

try {
await [Link](muteRole);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TIMER} User Muted`)
.setDescription(
`${EMOJI_INFO} **${[Link]}** has been muted.\n` +
`${EMOJI_INFO} **Reason:** ${reason}\n` +
`${EMOJI_TIMER} **Duration:** ${duration === 0 ? 'Permanent' :
`${duration} seconds`}`
)
.setColor('GREY');
await [Link]({ embeds: [embed] });

if (duration > 0) {
setTimeout(async () => {
try {
await [Link](muteRole);
[Link](`${EMOJI_TICK} **${[Link]}**
has been unmuted after ${duration} seconds.`);
} catch (error) {
[Link]('Failed to unmute member:', error);
}
}, duration * 1000);
}
} catch (error) {
[Link](`${EMOJI_CROSS} Failed to mute member: $
{[Link]}`);
}
}

async unmute(message, args) {


if (![Link]([Link].MANAGE_ROLES)) {
return [Link](`${EMOJI_CROSS} You don't have permission to
unmute members!`);
}

const member = [Link]();


if (!member) return [Link](`${EMOJI_CROSS} Please mention a member
to unmute!`);
const muteRole = [Link](role => [Link] ===
'Muted');
if (!muteRole) return [Link](`${EMOJI_CROSS} No mute role found!`);

try {
if ([Link]([Link])) {
await [Link](muteRole);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TIMER} User Unmuted`)
.setDescription(`${EMOJI_INFO} **${[Link]}** has been
unmuted.`)
.setColor('GREEN');
await [Link]({ embeds: [embed] });
} else {
[Link](`${EMOJI_CROSS} This user is not muted!`);
}
} catch (error) {
[Link](`${EMOJI_CROSS} Failed to unmute member: $
{[Link]}`);
}
}

async purge(message, args) {


if (![Link]([Link].MANAGE_MESSAGES)) {
return [Link](`${EMOJI_CROSS} You don't have permission to
delete messages!`);
}

const amount = parseInt(args[0]);


if (!amount || amount < 1) return [Link](`${EMOJI_CROSS} Please
provide a valid number of messages to delete!`);

try {
const deleted = await [Link](amount + 1);
const embed = new MessageEmbed()
.setTitle(`${EMOJI_TICK} Messages Purged`)
.setDescription(`${EMOJI_INFO} **${[Link] - 1}** messages
were deleted.`)
.setColor('BLUE');
const msg = await [Link]({ embeds: [embed] });
setTimeout(() => [Link](), 5000);
} catch (error) {
[Link](`${EMOJI_CROSS} Failed to delete messages: $
{[Link]}`);
}
}

async purgeUser(message, args) {


if (![Link]([Link].MANAGE_MESSAGES)) {
return [Link](`${EMOJI_CROSS} You don't have permission to
delete messages!`);
}

const member = [Link]();


if (!member) return [Link](`${EMOJI_CROSS} Please mention a user!`);

const amount = parseInt(args[1]);


if (!amount || amount < 1) return [Link](`${EMOJI_CROSS} Please
provide a valid number of messages to delete!`);

try {
const messages = await [Link]({ limit: 100 });
const userMessages = [Link](m => [Link] ===
[Link]).first(amount);
await [Link](userMessages);

const embed = new MessageEmbed()


.setTitle(`${EMOJI_TICK} User Messages Purged`)
.setDescription(`${EMOJI_INFO} **${[Link]}** messages
from **${[Link]}** were deleted.`)
.setColor('PURPLE');
const msg = await [Link]({ embeds: [embed] });
setTimeout(() => [Link](), 5000);
} catch (error) {
[Link](`${EMOJI_CROSS} Failed to delete messages: $
{[Link]}`);
}
}

async purgeBots(message) {
if (![Link]([Link].MANAGE_MESSAGES)) {
return [Link](`${EMOJI_CROSS} You don't have permission to
delete messages!`);
}

try {
const messages = await [Link]({ limit: 100 });
const botMessages = [Link](m => [Link]);
await [Link](botMessages);

const embed = new MessageEmbed()


.setTitle(`${EMOJI_TICK} Bot Messages Purged`)
.setDescription(`${EMOJI_INFO} **${[Link]}** bot messages
were deleted.`)
.setColor('DARK_RED');
const msg = await [Link]({ embeds: [embed] });
setTimeout(() => [Link](), 5000);
} catch (error) {
[Link](`${EMOJI_CROSS} Failed to delete messages: $
{[Link]}`);
}
}
}

[Link] = Moderation;

You might also like