3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 20:35:02 +00:00

MessageSaver: use a queue, add more logging for duplicate IDs

This commit is contained in:
Dragory 2021-08-20 21:00:53 +03:00
parent ebe224885e
commit 7054412640
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
4 changed files with 37 additions and 6 deletions

View file

@ -1,5 +1,16 @@
import { Message } from "discord.js";
import { Message, Snowflake } from "discord.js";
import { messageSaverEvt } from "../types";
import { SECONDS } from "../../../utils";
const recentlyCreatedMessages: Snowflake[] = [];
const recentlyCreatedMessagesToKeep = 100;
setInterval(() => {
const toDelete = recentlyCreatedMessages.length - recentlyCreatedMessagesToKeep;
if (toDelete > 0) {
recentlyCreatedMessages.splice(0, toDelete);
}
}, 60 * SECONDS);
export const MessageCreateEvt = messageSaverEvt({
event: "messageCreate",
@ -17,7 +28,17 @@ export const MessageCreateEvt = messageSaverEvt({
return;
}
await meta.pluginData.state.savedMessages.createFromMsg(meta.args.message);
meta.pluginData.state.queue.add(async () => {
if (recentlyCreatedMessages.includes(meta.args.message.id)) {
console.warn(
`Tried to save duplicate message from messageCreate event: ${meta.args.message.guildId} / ${meta.args.message.channelId} / ${meta.args.message.id}`,
);
return;
}
recentlyCreatedMessages.push(meta.args.message.id);
await meta.pluginData.state.savedMessages.createFromMsg(meta.args.message);
});
},
});
@ -35,7 +56,9 @@ export const MessageUpdateEvt = messageSaverEvt({
return;
}
await meta.pluginData.state.savedMessages.saveEditFromMsg(meta.args.newMessage as Message);
meta.pluginData.state.queue.add(async () => {
await meta.pluginData.state.savedMessages.saveEditFromMsg(meta.args.newMessage as Message);
});
},
});
@ -50,7 +73,9 @@ export const MessageDeleteEvt = messageSaverEvt({
return;
}
await meta.pluginData.state.savedMessages.markAsDeleted(msg.id);
meta.pluginData.state.queue.add(async () => {
await meta.pluginData.state.savedMessages.markAsDeleted(msg.id);
});
},
});
@ -61,6 +86,8 @@ export const MessageDeleteBulkEvt = messageSaverEvt({
async listener(meta) {
const ids = meta.args.messages.map(m => m.id);
await meta.pluginData.state.savedMessages.markBulkAsDeleted(ids);
meta.pluginData.state.queue.add(async () => {
await meta.pluginData.state.savedMessages.markBulkAsDeleted(ids);
});
},
});