diff --git a/src/plugins/MessageSaver.ts b/src/plugins/MessageSaver.ts index 77e002b0..91a63085 100644 --- a/src/plugins/MessageSaver.ts +++ b/src/plugins/MessageSaver.ts @@ -61,20 +61,16 @@ export class MessageSaverPlugin extends Plugin { await this.savedMessages.markBulkAsDeleted(ids); } - @d.command("save_messages_to_db", " ") - @d.permission("manage") - async saveMessageCmd(msg: Message, args: { channel: GuildChannel & TextChannel; ids: string[] }) { - await msg.channel.createMessage("Saving specified messages..."); - + async saveMessagesToDB(channel: GuildChannel & TextChannel, ids: string[]) { const failed = []; - for (const id of args.ids) { + for (const id of ids) { const savedMessage = await this.savedMessages.find(id); if (savedMessage) continue; let thisMsg: Message; try { - thisMsg = await args.channel.getMessage(id); + thisMsg = await channel.getMessage(id); if (!thisMsg) { failed.push(id); @@ -87,13 +83,48 @@ export class MessageSaverPlugin extends Plugin { } } + return { + savedCount: ids.length - failed.length, + failed + }; + } + + @d.command("save_messages_to_db", " ") + @d.permission("manage") + async saveMessageCmd(msg: Message, args: { channel: GuildChannel & TextChannel; ids: string[] }) { + await msg.channel.createMessage("Saving specified messages..."); + + const { savedCount, failed } = await this.saveMessagesToDB(args.channel, args.ids); + if (failed.length) { - const savedCount = args.ids.length - failed.length; msg.channel.createMessage( - successMessage(`Saved ${savedCount} messages. The following messages could not be saved: ${failed.join(", ")}`) + successMessage( + `Saved ${savedCount} messages. The following messages could not be saved: ${failed.join(", ")} + ` + ) ); } else { - msg.channel.createMessage(successMessage(`Saved ${args.ids.length} messages!`)); + msg.channel.createMessage(successMessage(`Saved ${savedCount} messages!`)); + } + } + + @d.command("save_pins_to_db", "") + @d.permission("manage") + async savePinsCmd(msg: Message, args: { channel: GuildChannel & TextChannel }) { + await msg.channel.createMessage(`Saving pins from <#${args.channel.id}>...`); + + const pins = await args.channel.getPins(); + const { savedCount, failed } = await this.saveMessagesToDB(args.channel, pins.map(m => m.id)); + + if (failed.length) { + msg.channel.createMessage( + successMessage( + `Saved ${savedCount} messages. The following messages could not be saved: ${failed.join(", ")} + ` + ) + ); + } else { + msg.channel.createMessage(successMessage(`Saved ${savedCount} messages!`)); } } }