Skip to content

Commit

Permalink
Update multiple items
Browse files Browse the repository at this point in the history
  • Loading branch information
TheMonDon committed Jul 19, 2024
1 parent ecfffc8 commit b399055
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 32 deletions.
4 changes: 2 additions & 2 deletions commands/General/help.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ class Help extends Command {
let displayedCategory = this.client.util.toProperCase(selectedCategory);
if (displayedCategory === 'Nsfw') displayedCategory = 'NSFW';

const pageFooter = totalPages === 1 ? '' : `Page ${pageNumber}/${totalPages} | `;
const pageFooter = totalPages === 1 ? '' : `Page ${pageNumber}/${totalPages}`;
em.setTitle(`${displayedCategory} Commands`);

if (pageFooter) {
Expand Down Expand Up @@ -257,7 +257,7 @@ class Help extends Command {
let displayedCategory = this.client.util.toProperCase(category);
if (displayedCategory === 'Nsfw') displayedCategory = 'NSFW';

const pageFooter = totalPages === 1 ? '' : `Page ${pageNumber}/${totalPages} | `;
const pageFooter = totalPages === 1 ? '' : `Page ${pageNumber}/${totalPages}`;
em.setTitle(`${displayedCategory} Commands`);

if (pageFooter) {
Expand Down
2 changes: 1 addition & 1 deletion commands/General/remindme.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class RemindMe extends Command {
const start = results[0].start.date().getTime();
const message = cleanedArgs;

if (start <= now) return msg.channel.send('Please make sure your reminder is not part of back to the future.');
if (start <= now) return msg.channel.send('Please make sure your reminder is not part of Back to the Future.');
if (isNaN(start) || !isFinite(start)) return msg.channel.send('Please provide a valid starting time.');
if (message.length > 256) return msg.channel.send('Please keep your reminder under 256 characters.');

Expand Down
4 changes: 3 additions & 1 deletion events/Bot/ready.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,9 @@ export async function run(client) {
.setFooter({ text: 'You created this reminder @' })
.setTimestamp(createdAt);
channel
? channel.send({ embeds: [em], content: `<@${userID}>, here's your reminder:` })
? channel.send({ embeds: [em], content: `<@${userID}>, here's your reminder:` }).catch((_error) => {
user.send({ embeds: [em], content: `${user.username}, here's your reminder:` });
})
: user.send({ embeds: [em], content: `${user.username}, here's your reminder:` });

await db.delete(`global.reminders.${remID}`);
Expand Down
15 changes: 8 additions & 7 deletions events/Message/messageReactionAdd.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ export async function run(client, messageReaction, user) {
},
];

const reason = 'Ticket has been created from the reaction menu. Use `topic` command to change it.';
const reason = `Ticket has been created from the reaction menu. Use \`${
client.getSettings(msg.guild).prefix
}topic\` command to change it.`;
const count = (await db.get(`servers.${msg.guild.id}.tickets.count`)) || 1;
await db.set(`servers.${msg.guild.id}.tickets.count`, count + 1);

Expand Down Expand Up @@ -90,13 +92,12 @@ export async function run(client, messageReaction, user) {

if (!role.mentionable) {
if (!tixChan.permissionsFor(client.user.id).has('MentionEveryone')) {
role.setMentionable(true);
tixChan.send({ content: role.toString(), embeds: [chanEmbed] }).catch(() => {});
} else {
tixChan.send({ content: role.toString(), embeds: [chanEmbed] }).catch(() => {});
await role.setMentionable(true);
await tixChan.send({ content: role.toString(), embeds: [chanEmbed] }).catch(() => {});
return await role.setMentionable(false);
}
} else {
tixChan.send({ content: role.toString(), embeds: [chanEmbed] }).catch(() => {});
}

return tixChan.send({ content: role.toString(), embeds: [chanEmbed] }).catch(() => {});
}
}
62 changes: 41 additions & 21 deletions slash_commands/Moderator/purge.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,10 +150,15 @@ exports.run = async (interaction) => {
return interaction.editReply('The bot needs `Manage Messages` permission.');
}

// Fetch the original interaction message
const originalMessage = await interaction.fetchReply();

async function getMessages(channel, limit, filter, before, after) {
return channel.messages
.fetch({ limit, before, after })
.then((messages) => (filter ? messages.filter(filter) : messages));
return channel.messages.fetch({ limit, before, after }).then((messages) => {
// Filter out the original interaction message
const filteredMessages = messages.filter((m) => m.id !== originalMessage.id);
return filter ? filteredMessages.filter(filter) : filteredMessages;
});
}

async function deleteMessages(channel, messages) {
Expand All @@ -168,107 +173,122 @@ exports.run = async (interaction) => {
});
}

let resultMessage = '';
switch (subcommand) {
case 'any': {
const messages = await getMessages(interaction.channel, amount, (m) => !m.pinned);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages.`);
resultMessage = `Successfully deleted ${size} messages.`;
break;
}

case 'user': {
const user = interaction.options.getUser('user');
const filter = (m) => m.author.id === user.id;
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages from ${user.tag}.`);
resultMessage = `Successfully deleted ${size} messages from ${user.tag}.`;
break;
}

case 'links': {
const filter = (m) => linkRegex.test(m.content);
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages containing links.`);
resultMessage = `Successfully deleted ${size} messages containing links.`;
break;
}

case 'invites': {
const filter = (m) => inviteRegex.test(m.content);
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages containing invites.`);
resultMessage = `Successfully deleted ${size} messages containing invites.`;
break;
}

case 'match': {
const filter = (m) => m.content.toLowerCase().includes(text.toLowerCase());
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages containing "${text}".`);
resultMessage = `Successfully deleted ${size} messages containing "${text}".`;
break;
}

case 'not': {
const filter = (m) => !m.content.toLowerCase().includes(text.toLowerCase());
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages not containing "${text}".`);
resultMessage = `Successfully deleted ${size} messages not containing "${text}".`;
break;
}

case 'startswith': {
const filter = (m) => m.content.toLowerCase().startsWith(text.toLowerCase());
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages starting with "${text}".`);
resultMessage = `Successfully deleted ${size} messages starting with "${text}".`;
break;
}

case 'endswith': {
const filter = (m) => m.content.toLowerCase().endsWith(text.toLowerCase());
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages ending with "${text}".`);
resultMessage = `Successfully deleted ${size} messages ending with "${text}".`;
break;
}

case 'bots': {
const filter = (m) => m.author.bot;
console.log('after fiter');
const messages = await getMessages(interaction.channel, amount, filter);
console.log('fetched messaged');
const size = await deleteMessages(interaction.channel, messages);
console.log('deleted messages');
return interaction.editReply(`Successfully deleted ${size} messages from bots.`);
resultMessage = `Successfully deleted ${size} messages from bots.`;
break;
}

case 'humans': {
const filter = (m) => !m.author.bot;
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages from humans.`);
resultMessage = `Successfully deleted ${size} messages from humans.`;
break;
}

case 'images': {
const filter = (m) => m.attachments.size > 0;
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages containing images.`);
resultMessage = `Successfully deleted ${size} messages containing images.`;
break;
}

case 'after': {
const messages = await getMessages(interaction.channel, amount, null, null, messageId);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages after ${messageId}.`);
resultMessage = `Successfully deleted ${size} messages after ${messageId}.`;
break;
}

case 'before': {
const messages = await getMessages(interaction.channel, amount, null, messageId);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages before ${messageId}.`);
resultMessage = `Successfully deleted ${size} messages before ${messageId}.`;
break;
}

case 'mentions': {
const filter = (m) => m.mentions.users.size > 0;
const messages = await getMessages(interaction.channel, amount, filter);
const size = await deleteMessages(interaction.channel, messages);
return interaction.editReply(`Successfully deleted ${size} messages containing mentions.`);
resultMessage = `Successfully deleted ${size} messages containing mentions.`;
break;
}

default:
return interaction.editReply('Invalid subcommand.');
resultMessage = 'Invalid subcommand.';
break;
}

await interaction.editReply(resultMessage);
};

0 comments on commit b399055

Please sign in to comment.