UNPKG

@zerrodevs/discord-bot-utils

Version:

A comprehensive utility package for Discord.js bots providing moderation, interaction, logging, and tax calculation features

65 lines (55 loc) 1.58 kB
const { PermissionFlagsBits } = require('discord.js'); const { EmbedUtil } = require('./embed'); class ModerationUtil { static async timeout(member, duration, reason = 'No reason provided') { try { await member.timeout(duration * 1000, reason); return true; } catch (error) { return false; } } static async clearMessages(channel, amount, filter = {}) { try { const messages = await channel.messages.fetch({ limit: amount }); let filteredMessages = messages; if (filter.user) { filteredMessages = messages.filter(msg => msg.author.id === filter.user.id); } if (filter.contains) { filteredMessages = messages.filter(msg => msg.content.includes(filter.contains)); } if (filter.beforeDate) { filteredMessages = messages.filter(msg => msg.createdTimestamp < filter.beforeDate); } await channel.bulkDelete(filteredMessages); return filteredMessages.size; } catch (error) { return 0; } } static async setSlowmode(channel, duration) { try { await channel.setRateLimitPerUser(duration); return true; } catch (error) { return false; } } static parseDuration(duration) { const units = { s: 1, m: 60, h: 3600, d: 86400 }; const match = duration.match(/^(\d+)([smhd])$/); if (!match) return null; const [, amount, unit] = match; return parseInt(amount) * units[unit]; } static validateModPermissions(member, permission) { return member.permissions.has(permission); } } module.exports = ModerationUtil;