summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/gateway/src/commands/delete.ts95
-rw-r--r--packages/gateway/src/commands/say.ts10
-rw-r--r--packages/gateway/src/listeners/messageCreate/index.ts2
3 files changed, 90 insertions, 17 deletions
diff --git a/packages/gateway/src/commands/delete.ts b/packages/gateway/src/commands/delete.ts
index 3d01455..bdbe585 100644
--- a/packages/gateway/src/commands/delete.ts
+++ b/packages/gateway/src/commands/delete.ts
@@ -66,24 +66,95 @@ export const handleDeleteCommand = async (message: Message) => {
}
try {
- let failedCount = 0;
-
- for (const messageId of messageIds) {
+ if (messageIds.length > 1) {
+ try {
+ const messagesToDelete = [];
+ let failedFetchCount = 0;
+
+ for (const messageId of messageIds)
+ try {
+ const targetMessage =
+ await targetChannel.messages.fetch(messageId);
+
+ messagesToDelete.push(targetMessage);
+ } catch {
+ failedFetchCount += 1;
+ }
+
+ if (messagesToDelete.length === 0) {
+ await message.reply("❌ No valid messages found to delete.");
+
+ return;
+ }
+
+ if ("bulkDelete" in targetChannel && messagesToDelete.length > 1) {
+ try {
+ await targetChannel.bulkDelete(messagesToDelete);
+ await message.delete();
+
+ if (failedFetchCount > 0)
+ console.warn(
+ `Failed to fetch ${failedFetchCount} out of ${messageIds.length} messages for bulk delete`,
+ );
+ } catch (bulkError) {
+ console.warn(
+ "Bulk delete failed, falling back to individual deletion:",
+ bulkError,
+ );
+
+ let failedDeleteCount = 0;
+
+ for (const message of messagesToDelete)
+ try {
+ await message.delete();
+ } catch {
+ failedDeleteCount += 1;
+ }
+
+ await message.delete();
+
+ if (failedDeleteCount > 0 || failedFetchCount > 0)
+ console.warn(
+ `Failed to delete ${failedDeleteCount} messages and fetch ${failedFetchCount} messages`,
+ );
+ }
+ } else {
+ let failedDeleteCount = 0;
+
+ for (const message of messagesToDelete)
+ try {
+ await message.delete();
+ } catch {
+ failedDeleteCount += 1;
+ }
+
+ await message.delete();
+
+ if (failedDeleteCount > 0 || failedFetchCount > 0)
+ console.warn(
+ `Failed to delete ${failedDeleteCount} messages and fetch ${failedFetchCount} messages`,
+ );
+ }
+ } catch (error) {
+ console.error("Error in bulk delete process:", error);
+ await message.reply(
+ "❌ Failed to delete messages. Check bot permissions and try again.",
+ );
+ }
+ } else {
try {
- const targetMessage = await targetChannel.messages.fetch(messageId);
+ const targetMessage = await targetChannel.messages.fetch(
+ messageIds[0],
+ );
await targetMessage.delete();
+ await message.delete();
} catch {
- failedCount += 1;
+ await message.reply(
+ "❌ Failed to delete message. Check bot permissions and try again.",
+ );
}
}
-
- await message.delete();
-
- if (failedCount > 0)
- console.warn(
- `Failed to delete ${failedCount} out of ${messageIds.length} messages`,
- );
} catch (error) {
console.error("Error deleting messages:", error);
await message.reply(
diff --git a/packages/gateway/src/commands/say.ts b/packages/gateway/src/commands/say.ts
index 831fe8c..76a6ec3 100644
--- a/packages/gateway/src/commands/say.ts
+++ b/packages/gateway/src/commands/say.ts
@@ -1,5 +1,4 @@
import { Message } from "discord.js";
-import { CENTRAL_GUILD_ID } from "../constants";
import { replyWithCleanup } from "../utilities";
export const handleSayCommand = async (message: Message) => {
@@ -28,7 +27,7 @@ export const handleSayCommand = async (message: Message) => {
let targetChannel: any;
let targetMessage: any = null;
const channelIdMatch = firstParameter.match(/^\d{17,19}$/);
-
+
if (!channelIdMatch) {
await replyWithCleanup(
message,
@@ -50,12 +49,15 @@ export const handleSayCommand = async (message: Message) => {
}
const messageIdMatch = secondParameter?.match(/^\d{17,19}$/);
-
+
if (messageIdMatch) {
try {
targetMessage = await targetChannel.messages.fetch(secondParameter);
} catch {
- await replyWithCleanup(message, "❌ Message not found in the specified channel.");
+ await replyWithCleanup(
+ message,
+ "❌ Message not found in the specified channel.",
+ );
return;
}
diff --git a/packages/gateway/src/listeners/messageCreate/index.ts b/packages/gateway/src/listeners/messageCreate/index.ts
index 8af5c2f..926fda9 100644
--- a/packages/gateway/src/listeners/messageCreate/index.ts
+++ b/packages/gateway/src/listeners/messageCreate/index.ts
@@ -8,7 +8,7 @@ import { handleRoleMentionCooldown } from "./roleMentionCooldown";
import { handleAICommand } from "./aiCommandHandler";
import { handleRandomEyesReaction } from "./randomEyesReaction";
import { handleRoleplayThumbsUpReaction } from "./roleplayThumbsUpReaction";
-import { handleBotMentionAutoDelete } from "./botMentionAutoDelete";
+// import { handleBotMentionAutoDelete } from "./botMentionAutoDelete";
import { recordMessageForStatistics } from "../messageStatistics";
export const handleMessageCreate = (client: Client) => {