import { Context, Schema } from "koishi"; import { Infer } from "../../../../services/extension/types"; import { ModelDescriptor } from "../../../../services/model"; import { Services } from "../../../../shared/constants"; interface CoreUtilConfig { typing: { baseDelay: number; charPerSecond: number; minDelay: number; maxDelay: number; }; vision: { model: ModelDescriptor; detail: "low" | "high" | "auto"; }; } export default class CoreUtilExtension { ctx: Context; config: CoreUtilConfig; static readonly inject: Services[]; static readonly Config: Schema; private readonly logger; private readonly assetService; private disposed; constructor(ctx: Context, config: CoreUtilConfig); sendMessage(args: Infer<{ message: string; target?: string; }>): Promise>; getImageDescription(args: Infer<{ image_id: string; question: string; }>): Promise>; private getTypingDelay; /** * 决定消息的最终目标和使用的机器人实例 */ private determineTarget; /** * 带有“人性化”延迟的消息发送执行器 * @param messages 要发送的消息数组 * @param bot 用于发送的机器人实例 * @param channelId 目标频道ID * @param originalSession 原始会话,用于创建after-send事件 */ private sendMessagesWithHumanLikeDelay; /** * 封装 after-send 事件的发射逻辑 */ private emitAfterSendEvent; } export {};