import type { QrcodeLookupOptions } from '@/common/types'; import type { QqbotAccount } from './account/qqbot-account.entity'; import type { QqbotCommand } from './command/qqbot-command.entity'; import type { QqbotAllowlist } from './permission/qqbot-allowlist.entity'; import type { QqbotBlocklist } from './permission/qqbot-blocklist.entity'; export type { QrcodeLookupOptions } from '@/common/types'; export type NapcatApiResponse = { code: number; data?: T; message?: string; }; export type NapcatCredential = { Credential?: string; }; export type NapcatLoginInfo = Record & { avatarUrl?: string; nick?: string; nickname?: string; online?: boolean; uin?: number | string; }; export type NapcatLoginStatus = { isLogin?: boolean; isOffline?: boolean; loginError?: string; qrcodeurl?: string; }; export type NapcatQrcode = { qrcode?: string; qrcodeurl?: string; url?: string; }; export type NapcatRestartOptions = { waitForReady?: boolean; }; export type QqbotConnectionMode = 'reverse-ws'; export type QqbotConnectionRole = 'API' | 'Event' | 'Universal'; export type QqbotConnectionStatus = 'offline' | 'online'; export type QqbotLoginScanMode = 'create' | 'refresh'; export type QqbotLoginScanStatus = 'error' | 'expired' | 'pending' | 'success'; export type QqbotMessageDirection = 'inbound' | 'outbound'; export type QqbotMessageType = 'channel' | 'group' | 'private'; export type QqbotNapcatContainerStatus = | 'creating' | 'error' | 'running' | 'stopped'; export type QqbotAccountNapcatBindStatus = 'bound' | 'disabled' | 'pending'; export type QqbotAccountAbilityType = 'command' | 'event_plugin' | 'rule'; export type QqbotAccountNapcatRuntimeInfo = { bindStatus?: QqbotAccountNapcatBindStatus; containerId?: string; containerName?: string; containerStatus?: QqbotNapcatContainerStatus; lastCheckedAt?: Date | null; lastError?: null | string; lastLoginAt?: Date | null; lastStartedAt?: Date | null; webuiPort?: null | number; }; export type QqbotAccountListItem = QqbotAccount & { napcat?: null | QqbotAccountNapcatRuntimeInfo; }; export type QqbotRuleMatchType = 'equals' | 'keyword' | 'regex'; export type QqbotRuleTargetType = 'all' | 'channel' | 'group' | 'private'; export type QqbotCommandParserType = 'ff14Price' | 'fflogsCharacter' | 'plain'; export type QqbotCommandLogStatus = 'failed' | 'success'; export type QqbotCommandMatchResult = { alias: string; input: Record; matched: true; rawArgs: string; }; export type QqbotPluginHealthStatus = 'degraded' | 'healthy' | 'offline'; export type QqbotPluginHealth = { checkedAt: string; message?: string; name?: string; pluginKey?: string; status: QqbotPluginHealthStatus; triggerMode?: QqbotPluginTriggerMode; }; export type QqbotPluginTriggerMode = 'command' | 'event'; export type QqbotPluginOperationContext = { args?: Record; command?: QqbotCommand; message?: QqbotNormalizedMessage; }; export type QqbotPluginOperation = { cacheTtlMs?: number; description?: string; inputSchema?: Record; key: string; name: string; outputSchema?: Record; execute: ( input: Input, context: QqbotPluginOperationContext, ) => Promise; }; export type QqbotIntegrationPlugin = { description?: string; healthCheck?: () => Promise; key: string; name: string; operations: QqbotPluginOperation[]; version: string; }; export type QqbotEventPluginSummary = { accountName?: string; bound: boolean; connectStatus?: string; description?: string; key: string; name: string; remark?: string; selfId: string; triggerType: 'message'; version: string; }; export type QqbotEventPluginDefinition = { description?: string; key: string; name: string; remark?: string; triggerType: 'message'; version: string; }; export type QqbotPluginSummary = { description?: string; key: string; name: string; operationCount: number; triggerMode: QqbotPluginTriggerMode; version: string; }; export type QqbotPluginOperationSummary = { cacheTtlMs?: number; description?: string; inputSchema?: Record; key: string; name: string; outputSchema?: Record; pluginKey: string; triggerMode: QqbotPluginTriggerMode; }; export type QqbotSendStatus = 'failed' | 'pending' | 'success'; export type QqbotPermissionTargetType = 'channel' | 'group' | 'private' | 'qq'; export type QqbotPermissionConfig = { allowlistEnabled: boolean; blocklistEnabled: boolean; }; export type QqbotPermissionEntity = QqbotAllowlist | QqbotBlocklist; export type QqbotPermissionKind = 'allowlist' | 'blocklist'; export type QqbotOneBotEvent = Record & { channel_id?: number | string; group_id?: number | string; guild_id?: number | string; message?: any; message_id?: number | string; message_type?: string; post_type?: string; raw_message?: string; self_id?: number | string; sender?: Record; time?: number; user_id?: number | string; }; export type QqbotNormalizedMessage = { channelId?: string; eventTime: Date; groupId?: string; messageId: string; messageText: string; messageType: QqbotMessageType; rawEvent: QqbotOneBotEvent; rawMessage: string; selfId: string; senderNickname?: string; targetId: string; userId: string; }; export type QqbotOneBotActionResponse = { data?: any; echo?: string; message?: string; retcode?: number; status?: string; }; export type QqbotBusHandler = (payload: any) => Promise | void; export type QqbotLoginScanResult = { accountId?: string; containerId?: string; containerName?: string; errorMessage?: string; expiresAt?: number; mode: QqbotLoginScanMode; qrcode?: string; selfId?: string; sessionId?: string; status: QqbotLoginScanStatus; webuiPort?: null | number; }; export type QqbotLoginScanEventStatus = | 'error' | 'info' | 'processing' | 'success'; export type QqbotLoginScanEvent = { createdAt: number; message: string; result?: QqbotLoginScanResult; status: QqbotLoginScanEventStatus; step: string; }; export type QqbotLoginScanSession = { accountId?: string; containerId?: string; containerName?: string; createdAt: number; errorMessage?: string; expiresAt: number; expectedSelfId?: string; id: string; lastRestartedAt?: number; mode: QqbotLoginScanMode; preparingRelogin?: boolean; qrcode?: string; status: QqbotLoginScanStatus; webuiPort?: null | number; }; export type QqbotNapcatRuntime = { baseUrl: string; id?: string; name: string; webuiPort?: null | number; webuiToken?: null | string; }; export type QqbotPendingAction = { reject: (reason: Error) => void; resolve: (value: QqbotOneBotActionResponse) => void; timer: NodeJS.Timeout; }; export type QqbotReverseActionSender = { sendAction: ( selfId: string, action: string, params: Record, ) => Promise; }; export type QqbotRepeaterConversationState = { count: number; lastRepeatedAt?: number; lastText: string; repeatedText: string; updatedAt: number; }; export type QrcodeRefreshOptions = QrcodeLookupOptions & { fallbackStatus?: NapcatLoginStatus; };