Add debug code for duplicate message saving

This commit is contained in:
Dragory 2021-09-04 20:16:44 +03:00
parent 6486dd7ca8
commit a396779cd5
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
3 changed files with 22 additions and 9 deletions

View file

@ -21,6 +21,8 @@ const defaultOptions: PluginOptions<MessageSaverPluginType> = {
],
};
let debugId = 0;
export const MessageSaverPlugin = zeppelinGuildPlugin<MessageSaverPluginType>()({
name: "message_saver",
showInDocs: false,
@ -45,5 +47,6 @@ export const MessageSaverPlugin = zeppelinGuildPlugin<MessageSaverPluginType>()(
beforeLoad(pluginData) {
const { state, guild } = pluginData;
state.savedMessages = GuildSavedMessages.getGuildInstance(guild.id);
state.debugId = ++debugId;
},
});

View file

@ -1,14 +1,21 @@
import { Constants, Message, MessageType, Snowflake } from "discord.js";
import { messageSaverEvt } from "../types";
import { SECONDS } from "../../../utils";
import moment from "moment-timezone";
const recentlyCreatedMessages: Snowflake[] = [];
const recentlyCreatedMessages: Map<Snowflake, number> = new Map();
const recentlyCreatedMessagesToKeep = 100;
setInterval(() => {
const toDelete = recentlyCreatedMessages.length - recentlyCreatedMessagesToKeep;
if (toDelete > 0) {
recentlyCreatedMessages.splice(0, toDelete);
let toDelete = recentlyCreatedMessages.size - recentlyCreatedMessagesToKeep;
for (const key of recentlyCreatedMessages.keys()) {
if (toDelete === 0) {
break;
}
recentlyCreatedMessages.delete(key);
toDelete--;
}
}, 60 * SECONDS);
@ -34,13 +41,15 @@ export const MessageCreateEvt = messageSaverEvt({
return;
}
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}`,
);
// FIXME: Remove debug code
if (recentlyCreatedMessages.has(meta.args.message.id)) {
const context = `${meta.pluginData.state.debugId} / ${meta.args.message.guildId} / ${meta.args.message.channelId} / ${meta.args.message.id}`;
const timestamp = moment(recentlyCreatedMessages.get(meta.args.message.id)!).format("HH:mm:ss.SSS");
// tslint:disable-next-line:no-console
console.warn(`Tried to save duplicate message from messageCreate event: ${context} / saved at: ${timestamp}`);
return;
}
recentlyCreatedMessages.push(meta.args.message.id);
recentlyCreatedMessages.set(meta.args.message.id, Date.now());
await meta.pluginData.state.savedMessages.createFromMsg(meta.args.message);
},

View file

@ -12,6 +12,7 @@ export interface MessageSaverPluginType extends BasePluginType {
config: TConfigSchema;
state: {
savedMessages: GuildSavedMessages;
debugId: number;
};
}