3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-14 21:31:50 +00:00

Some code reorganisation

This commit is contained in:
Dragory 2018-11-24 14:18:48 +02:00
parent ba2ad8a528
commit b692c06b4f
2 changed files with 49 additions and 36 deletions

View file

@ -2,6 +2,8 @@ import { Brackets, getRepository, Repository } from "typeorm";
import { BaseRepository } from "./BaseRepository";
import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage";
import EventEmitter from "events";
import { GuildChannel, Message } from "eris";
import moment from "moment-timezone";
const CLEANUP_INTERVAL = 5 * 60 * 1000;
@ -20,6 +22,18 @@ export class GuildSavedMessages extends BaseRepository {
setInterval(() => this.cleanup(), CLEANUP_INTERVAL);
}
public msgToSavedMessageData(msg: Message): ISavedMessageData {
return {
attachments: msg.attachments,
author: {
username: msg.author.username,
discriminator: msg.author.discriminator
},
content: msg.content,
embeds: msg.embeds
};
}
async cleanup() {
await this.messages
.createQueryBuilder("messages")
@ -60,6 +74,7 @@ export class GuildSavedMessages extends BaseRepository {
try {
await this.messages.insert({ ...data, guild_id: this.guildId });
} catch (e) {
console.warn(e);
return;
}
@ -67,6 +82,23 @@ export class GuildSavedMessages extends BaseRepository {
this.events.emit("create", [inserted]);
}
async createFromMsg(msg: Message, overrides = {}) {
const savedMessageData = this.msgToSavedMessageData(msg);
const postedAt = moment.utc(msg.timestamp, "x").format("YYYY-MM-DD HH:mm:ss.SSS");
const data = {
id: msg.id,
guild_id: (msg.channel as GuildChannel).guild.id,
channel_id: msg.channel.id,
user_id: msg.author.id,
is_bot: msg.author.bot,
data: savedMessageData,
posted_at: postedAt
};
return this.create({ ...data, ...overrides });
}
async markAsDeleted(id) {
await this.messages
.createQueryBuilder("messages")
@ -82,7 +114,7 @@ export class GuildSavedMessages extends BaseRepository {
this.events.emit("delete", [deleted]);
}
async edit(id, newData: ISavedMessageData) {
async saveEdit(id, newData: ISavedMessageData) {
const oldMessage = await this.messages.findOne(id);
const newMessage = { ...oldMessage, data: newData };
@ -95,4 +127,9 @@ export class GuildSavedMessages extends BaseRepository {
this.events.emit("edit", [newMessage, oldMessage]);
}
async saveEditFromMsg(msg: Message) {
const newData = this.msgToSavedMessageData(msg);
return this.saveEdit(msg.id, newData);
}
}

View file

@ -1,26 +1,12 @@
import { Plugin, decorators as d } from "knub";
import { Message } from "eris";
import { GuildSavedMessages } from "../data/GuildSavedMessages";
import { ISavedMessageData } from "../data/entities/SavedMessage";
import moment from "moment-timezone";
export class MessageSaverPlugin extends Plugin {
protected messages: GuildSavedMessages;
protected savedMessages: GuildSavedMessages;
onLoad() {
this.messages = GuildSavedMessages.getInstance(this.guildId);
}
protected msgToSavedMessageData(msg: Message): ISavedMessageData {
return {
attachments: msg.attachments,
author: {
username: msg.author.username,
discriminator: msg.author.discriminator
},
content: msg.content,
embeds: msg.embeds
};
this.savedMessages = GuildSavedMessages.getInstance(this.guildId);
}
@d.event("messageCreate", "guild", false)
@ -30,34 +16,24 @@ export class MessageSaverPlugin extends Plugin {
return;
}
const data: ISavedMessageData = this.msgToSavedMessageData(msg);
const postedAt = moment.utc(msg.timestamp, "x").format("YYYY-MM-DD HH:mm:ss.SSS");
await this.messages.create({
id: msg.id,
channel_id: msg.channel.id,
user_id: msg.author.id,
is_bot: msg.author.bot,
data,
posted_at: postedAt
});
await this.savedMessages.createFromMsg(msg);
}
@d.event("messageDelete", "guild", false)
async onMessageDelete(msg: Message) {
const savedMessage = await this.messages.find(msg.id);
if (!savedMessage) return;
if (msg.type != null && msg.type !== 0) {
return;
}
await this.messages.markAsDeleted(msg.id);
await this.savedMessages.markAsDeleted(msg.id);
}
@d.event("messageUpdate", "guild", false)
async onMessageUpdate(msg: Message) {
const savedMessage = await this.messages.find(msg.id);
if (!savedMessage) return;
if (msg.type !== 0) {
return;
}
const newData = this.msgToSavedMessageData(msg);
await this.messages.edit(msg.id, newData);
await this.savedMessages.saveEditFromMsg(msg);
}
}