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

feat: add env var to enable profiling

This commit is contained in:
Dragory 2021-10-28 17:11:56 +03:00
parent 831ff1893a
commit bb94d77143
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
5 changed files with 72 additions and 26 deletions

View file

@ -7,6 +7,7 @@ import { clearRecentActionsForMessage } from "../functions/clearRecentActionsFor
import { runAutomod } from "../functions/runAutomod";
import { AutomodContext, AutomodPluginType } from "../types";
import { performance } from "perf_hooks";
import { profilingEnabled } from "../../../utils/easyProfiler";
export async function runAutomodOnMessage(
pluginData: GuildPluginData<AutomodPluginType>,
@ -34,6 +35,10 @@ export async function runAutomodOnMessage(
await runAutomod(pluginData, context);
pluginData.getKnubInstance().profiler.addDataPoint(`automod:${pluginData.guild.id}`, performance.now() - startTime);
if (profilingEnabled()) {
pluginData
.getKnubInstance()
.profiler.addDataPoint(`automod:${pluginData.guild.id}`, performance.now() - startTime);
}
});
}

View file

@ -7,7 +7,7 @@ import { availableTriggers } from "../triggers/availableTriggers";
import { AutomodContext, AutomodPluginType } from "../types";
import { checkAndUpdateCooldown } from "./checkAndUpdateCooldown";
import { performance } from "perf_hooks";
import { calculateBlocking } from "../../../utils/easyProfiler";
import { calculateBlocking, profilingEnabled } from "../../../utils/easyProfiler";
export async function runAutomod(pluginData: GuildPluginData<AutomodPluginType>, context: AutomodContext) {
const userId = context.user?.id || context.member?.id || context.message?.user_id;
@ -50,20 +50,28 @@ export async function runAutomod(pluginData: GuildPluginData<AutomodPluginType>,
const triggerStartTime = performance.now();
const trigger = availableTriggers[triggerName];
const getBlockingTime = calculateBlocking();
let getBlockingTime: ReturnType<typeof calculateBlocking> | null = null;
if (profilingEnabled()) {
getBlockingTime = calculateBlocking();
}
matchResult = await trigger.match({
ruleName,
pluginData,
context,
triggerConfig,
});
const blockingTime = getBlockingTime();
pluginData
.getKnubInstance()
.profiler.addDataPoint(
`automod:${pluginData.guild.id}:${ruleName}:triggers:${triggerName}:blocking`,
blockingTime,
);
if (profilingEnabled()) {
const blockingTime = getBlockingTime?.() || 0;
pluginData
.getKnubInstance()
.profiler.addDataPoint(
`automod:${pluginData.guild.id}:${ruleName}:triggers:${triggerName}:blocking`,
blockingTime,
);
}
if (matchResult) {
contexts = [context, ...(matchResult.extraContexts || [])];
@ -95,12 +103,14 @@ export async function runAutomod(pluginData: GuildPluginData<AutomodPluginType>,
matchResult.fullSummary = `Triggered automod rule **${ruleName}**\n${matchResult.summary}`.trim();
}
pluginData
.getKnubInstance()
.profiler.addDataPoint(
`automod:${pluginData.guild.id}:${ruleName}:triggers:${triggerName}`,
performance.now() - triggerStartTime,
);
if (profilingEnabled()) {
pluginData
.getKnubInstance()
.profiler.addDataPoint(
`automod:${pluginData.guild.id}:${ruleName}:triggers:${triggerName}`,
performance.now() - triggerStartTime,
);
}
if (matchResult) {
break triggerLoop;
@ -126,18 +136,22 @@ export async function runAutomod(pluginData: GuildPluginData<AutomodPluginType>,
matchResult,
});
pluginData
.getKnubInstance()
.profiler.addDataPoint(
`automod:${pluginData.guild.id}:${ruleName}:actions:${actionName}`,
performance.now() - actionStartTime,
);
if (profilingEnabled()) {
pluginData
.getKnubInstance()
.profiler.addDataPoint(
`automod:${pluginData.guild.id}:${ruleName}:actions:${actionName}`,
performance.now() - actionStartTime,
);
}
}
}
pluginData
.getKnubInstance()
.profiler.addDataPoint(`automod:${pluginData.guild.id}:${ruleName}`, performance.now() - ruleStartTime);
if (profilingEnabled()) {
pluginData
.getKnubInstance()
.profiler.addDataPoint(`automod:${pluginData.guild.id}:${ruleName}`, performance.now() - ruleStartTime);
}
if (matchResult && !rule.allow_further_rules) {
break;