zappyzep/src/plugins/MessageSaver.ts

45 lines
1.1 KiB
TypeScript

import { Plugin, decorators as d } from "knub";
import { Message } from "eris";
import { GuildSavedMessages } from "../data/GuildSavedMessages";
export class MessageSaverPlugin extends Plugin {
protected savedMessages: GuildSavedMessages;
onLoad() {
this.savedMessages = GuildSavedMessages.getInstance(this.guildId);
}
@d.event("messageCreate", "guild", false)
async onMessageCreate(msg: Message) {
// Only save regular chat messages
if (msg.type !== 0) {
return;
}
await this.savedMessages.createFromMsg(msg);
}
@d.event("messageDelete", "guild", false)
async onMessageDelete(msg: Message) {
if (msg.type != null && msg.type !== 0) {
return;
}
await this.savedMessages.markAsDeleted(msg.id);
}
@d.event("messageUpdate", "guild", false)
async onMessageUpdate(msg: Message) {
if (msg.type !== 0) {
return;
}
await this.savedMessages.saveEditFromMsg(msg);
}
@d.event("messageDeleteBulk", "guild", false)
async onMessageBulkDelete(messages: Message[]) {
const ids = messages.map(m => m.id);
await this.savedMessages.markBulkAsDeleted(ids);
}
}