46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
type DebugConfig = {
|
|
enableDebugLogs?: boolean;
|
|
debugLogChannelIds?: string[];
|
|
};
|
|
|
|
export function pickDefined(input: Record<string, unknown>): Record<string, unknown> {
|
|
const out: Record<string, unknown> = {};
|
|
for (const [k, v] of Object.entries(input)) {
|
|
if (v !== undefined) out[k] = v;
|
|
}
|
|
return out;
|
|
}
|
|
|
|
export function shouldDebugLog(cfg: DebugConfig, channelId?: string): boolean {
|
|
if (!cfg.enableDebugLogs) return false;
|
|
const allow = Array.isArray(cfg.debugLogChannelIds) ? cfg.debugLogChannelIds : [];
|
|
if (allow.length === 0) return true;
|
|
if (!channelId) return true;
|
|
return allow.includes(channelId);
|
|
}
|
|
|
|
export function debugCtxSummary(ctx: Record<string, unknown>, event: Record<string, unknown>) {
|
|
const meta = ((ctx.metadata || event.metadata || {}) as Record<string, unknown>) || {};
|
|
return {
|
|
sessionKey: typeof ctx.sessionKey === "string" ? ctx.sessionKey : undefined,
|
|
commandSource: typeof ctx.commandSource === "string" ? ctx.commandSource : undefined,
|
|
messageProvider: typeof ctx.messageProvider === "string" ? ctx.messageProvider : undefined,
|
|
channel: typeof ctx.channel === "string" ? ctx.channel : undefined,
|
|
channelId: typeof ctx.channelId === "string" ? ctx.channelId : undefined,
|
|
senderId: typeof ctx.senderId === "string" ? ctx.senderId : undefined,
|
|
from: typeof ctx.from === "string" ? ctx.from : undefined,
|
|
metaSenderId:
|
|
typeof meta.senderId === "string"
|
|
? meta.senderId
|
|
: typeof meta.sender_id === "string"
|
|
? meta.sender_id
|
|
: undefined,
|
|
metaUserId:
|
|
typeof meta.userId === "string"
|
|
? meta.userId
|
|
: typeof meta.user_id === "string"
|
|
? meta.user_id
|
|
: undefined,
|
|
};
|
|
}
|