mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-27 01:41:40 +00:00
77 lines
2.0 KiB
TypeScript
77 lines
2.0 KiB
TypeScript
import { vi } from "vitest";
|
|
import type { OpenClawConfig } from "../../config/types.js";
|
|
import type { createDiscordMessageHandler } from "./message-handler.js";
|
|
import { createNoopThreadBindingManager } from "./thread-bindings.js";
|
|
|
|
export const DEFAULT_DISCORD_BOT_USER_ID = "bot-123";
|
|
|
|
export function createDiscordHandlerParams(overrides?: {
|
|
botUserId?: string;
|
|
setStatus?: (patch: Record<string, unknown>) => void;
|
|
abortSignal?: AbortSignal;
|
|
workerRunTimeoutMs?: number;
|
|
}): Parameters<typeof createDiscordMessageHandler>[0] {
|
|
const cfg: OpenClawConfig = {
|
|
channels: {
|
|
discord: {
|
|
enabled: true,
|
|
token: "test-token",
|
|
groupPolicy: "allowlist",
|
|
},
|
|
},
|
|
messages: {
|
|
inbound: {
|
|
debounceMs: 0,
|
|
},
|
|
},
|
|
};
|
|
return {
|
|
cfg,
|
|
discordConfig: cfg.channels?.discord,
|
|
accountId: "default",
|
|
token: "test-token",
|
|
runtime: {
|
|
log: vi.fn(),
|
|
error: vi.fn(),
|
|
exit: (code: number): never => {
|
|
throw new Error(`exit ${code}`);
|
|
},
|
|
},
|
|
botUserId: overrides?.botUserId ?? DEFAULT_DISCORD_BOT_USER_ID,
|
|
guildHistories: new Map(),
|
|
historyLimit: 0,
|
|
mediaMaxBytes: 10_000,
|
|
textLimit: 2_000,
|
|
replyToMode: "off" as const,
|
|
dmEnabled: true,
|
|
groupDmEnabled: false,
|
|
threadBindings: createNoopThreadBindingManager("default"),
|
|
setStatus: overrides?.setStatus,
|
|
abortSignal: overrides?.abortSignal,
|
|
workerRunTimeoutMs: overrides?.workerRunTimeoutMs,
|
|
};
|
|
}
|
|
|
|
export function createDiscordPreflightContext(channelId = "ch-1") {
|
|
return {
|
|
data: {
|
|
channel_id: channelId,
|
|
message: {
|
|
id: `msg-${channelId}`,
|
|
channel_id: channelId,
|
|
attachments: [],
|
|
},
|
|
},
|
|
message: {
|
|
id: `msg-${channelId}`,
|
|
channel_id: channelId,
|
|
attachments: [],
|
|
},
|
|
route: {
|
|
sessionKey: `agent:main:discord:channel:${channelId}`,
|
|
},
|
|
baseSessionKey: `agent:main:discord:channel:${channelId}`,
|
|
messageChannelId: channelId,
|
|
};
|
|
}
|