mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-03-15 05:41:51 +00:00
Some code reorganisation
This commit is contained in:
parent
ba2ad8a528
commit
b692c06b4f
2 changed files with 49 additions and 36 deletions
|
@ -2,6 +2,8 @@ import { Brackets, getRepository, Repository } from "typeorm";
|
||||||
import { BaseRepository } from "./BaseRepository";
|
import { BaseRepository } from "./BaseRepository";
|
||||||
import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage";
|
import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage";
|
||||||
import EventEmitter from "events";
|
import EventEmitter from "events";
|
||||||
|
import { GuildChannel, Message } from "eris";
|
||||||
|
import moment from "moment-timezone";
|
||||||
|
|
||||||
const CLEANUP_INTERVAL = 5 * 60 * 1000;
|
const CLEANUP_INTERVAL = 5 * 60 * 1000;
|
||||||
|
|
||||||
|
@ -20,6 +22,18 @@ export class GuildSavedMessages extends BaseRepository {
|
||||||
setInterval(() => this.cleanup(), CLEANUP_INTERVAL);
|
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() {
|
async cleanup() {
|
||||||
await this.messages
|
await this.messages
|
||||||
.createQueryBuilder("messages")
|
.createQueryBuilder("messages")
|
||||||
|
@ -60,6 +74,7 @@ export class GuildSavedMessages extends BaseRepository {
|
||||||
try {
|
try {
|
||||||
await this.messages.insert({ ...data, guild_id: this.guildId });
|
await this.messages.insert({ ...data, guild_id: this.guildId });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.warn(e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +82,23 @@ export class GuildSavedMessages extends BaseRepository {
|
||||||
this.events.emit("create", [inserted]);
|
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) {
|
async markAsDeleted(id) {
|
||||||
await this.messages
|
await this.messages
|
||||||
.createQueryBuilder("messages")
|
.createQueryBuilder("messages")
|
||||||
|
@ -82,7 +114,7 @@ export class GuildSavedMessages extends BaseRepository {
|
||||||
this.events.emit("delete", [deleted]);
|
this.events.emit("delete", [deleted]);
|
||||||
}
|
}
|
||||||
|
|
||||||
async edit(id, newData: ISavedMessageData) {
|
async saveEdit(id, newData: ISavedMessageData) {
|
||||||
const oldMessage = await this.messages.findOne(id);
|
const oldMessage = await this.messages.findOne(id);
|
||||||
const newMessage = { ...oldMessage, data: newData };
|
const newMessage = { ...oldMessage, data: newData };
|
||||||
|
|
||||||
|
@ -95,4 +127,9 @@ export class GuildSavedMessages extends BaseRepository {
|
||||||
|
|
||||||
this.events.emit("edit", [newMessage, oldMessage]);
|
this.events.emit("edit", [newMessage, oldMessage]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async saveEditFromMsg(msg: Message) {
|
||||||
|
const newData = this.msgToSavedMessageData(msg);
|
||||||
|
return this.saveEdit(msg.id, newData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +1,12 @@
|
||||||
import { Plugin, decorators as d } from "knub";
|
import { Plugin, decorators as d } from "knub";
|
||||||
import { Message } from "eris";
|
import { Message } from "eris";
|
||||||
import { GuildSavedMessages } from "../data/GuildSavedMessages";
|
import { GuildSavedMessages } from "../data/GuildSavedMessages";
|
||||||
import { ISavedMessageData } from "../data/entities/SavedMessage";
|
|
||||||
import moment from "moment-timezone";
|
|
||||||
|
|
||||||
export class MessageSaverPlugin extends Plugin {
|
export class MessageSaverPlugin extends Plugin {
|
||||||
protected messages: GuildSavedMessages;
|
protected savedMessages: GuildSavedMessages;
|
||||||
|
|
||||||
onLoad() {
|
onLoad() {
|
||||||
this.messages = GuildSavedMessages.getInstance(this.guildId);
|
this.savedMessages = 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
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@d.event("messageCreate", "guild", false)
|
@d.event("messageCreate", "guild", false)
|
||||||
|
@ -30,34 +16,24 @@ export class MessageSaverPlugin extends Plugin {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const data: ISavedMessageData = this.msgToSavedMessageData(msg);
|
await this.savedMessages.createFromMsg(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
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@d.event("messageDelete", "guild", false)
|
@d.event("messageDelete", "guild", false)
|
||||||
async onMessageDelete(msg: Message) {
|
async onMessageDelete(msg: Message) {
|
||||||
const savedMessage = await this.messages.find(msg.id);
|
if (msg.type != null && msg.type !== 0) {
|
||||||
if (!savedMessage) return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await this.messages.markAsDeleted(msg.id);
|
await this.savedMessages.markAsDeleted(msg.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@d.event("messageUpdate", "guild", false)
|
@d.event("messageUpdate", "guild", false)
|
||||||
async onMessageUpdate(msg: Message) {
|
async onMessageUpdate(msg: Message) {
|
||||||
const savedMessage = await this.messages.find(msg.id);
|
if (msg.type !== 0) {
|
||||||
if (!savedMessage) return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const newData = this.msgToSavedMessageData(msg);
|
await this.savedMessages.saveEditFromMsg(msg);
|
||||||
|
|
||||||
await this.messages.edit(msg.id, newData);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue