mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-03-15 05:41:51 +00:00
36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
import { botControlCmd } from "../types";
|
|
import { getRateLimitStats } from "../../../rateLimitStats";
|
|
import moment from "moment-timezone";
|
|
import { GuildArchives } from "../../../data/GuildArchives";
|
|
import { getBaseUrl, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
|
import { TextChannel } from "discord.js";
|
|
|
|
export const RateLimitPerformanceCmd = botControlCmd({
|
|
trigger: ["rate_limit_performance"],
|
|
permission: "can_performance",
|
|
|
|
signature: {},
|
|
|
|
async run({ pluginData, message: msg, args }) {
|
|
const logItems = getRateLimitStats();
|
|
if (logItems.length === 0) {
|
|
sendSuccessMessage(pluginData, msg.channel as TextChannel, `No rate limits hit`);
|
|
return;
|
|
}
|
|
|
|
logItems.reverse();
|
|
const formatted = logItems.map((item) => {
|
|
const formattedTime = moment.utc(item.timestamp).format("YYYY-MM-DD HH:mm:ss.SSS");
|
|
return `${item.data.global ? "GLOBAL " : ""}${item.data.method} ${item.data.route} stalled for ${
|
|
item.data.timeout
|
|
}ms`;
|
|
});
|
|
|
|
const fullText = `Last ${logItems.length} rate limits hit:\n\n${formatted.join("\n")}`;
|
|
|
|
const archives = GuildArchives.getGuildInstance("0");
|
|
const archiveId = await archives.create(fullText, moment().add(1, "hour"));
|
|
const archiveUrl = archives.getUrl(getBaseUrl(pluginData), archiveId);
|
|
msg.channel.send(`Link: ${archiveUrl}`);
|
|
},
|
|
});
|