Skip to content

配置项

QQ 机器人 SDK 提供了灵活的配置选项,支持多种连接模式和自定义参数。

🔧 基础配置

Bot.Config 接口

typescript
interface Config<T extends ReceiverMode, M extends ApplicationPlatform> {
    // 必填项
    appid: string                           // QQ 机器人的 App ID
    secret: string                          // QQ 机器人的 App Secret  
    intents: Intent[]                       // 事件订阅列表
    mode: T                                 // 连接模式

    // 可选项
    sandbox?: boolean                       // 是否使用沙箱环境,默认 false
    logLevel?: LogLevel                     // 日志级别,默认 'info'
    removeAt?: boolean                      // 是否移除消息中的 @机器人,默认 false
    maxRetry?: number                       // 最大重连次数,默认 10
    timeout?: number                        // 请求超时时间(ms),默认 5000

    // WebSocket 模式专用
    // 无需额外配置

    // Webhook 模式专用
    port?: number                           // 监听端口,mode 为 webhook 时必填
    path?: string                           // 监听路径,mode 为 webhook 时必填

    // 中间件模式专用
    application?: M                         // 应用平台类型,mode 为 middleware 时必填
}

📋 配置详解

基础配置

属性名类型必填描述默认值
appidstringQQ 机器人的 App ID-
secretstringQQ 机器人的 App Secret-
intentsIntent[]事件订阅列表-
modeReceiverMode连接模式-
sandboxboolean是否使用沙箱环境false
logLevelLogLevel日志输出级别'info'
removeAtboolean自动移除消息中的@机器人false
maxRetrynumber最大重连次数10
timeoutnumber请求超时时间(毫秒)5000

连接模式配置

WebSocket 模式

typescript
import { Bot, ReceiverMode } from 'qq-official-bot'

const bot = new Bot({
    appid: 'your_app_id',
    secret: 'your_app_secret',
    intents: ['GUILD_MESSAGES'],
    mode: ReceiverMode.WEBSOCKET,
    // WebSocket 模式无需额外配置
})

Webhook 模式

typescript
import { Bot, ReceiverMode } from 'qq-official-bot'

const bot = new Bot({
    appid: 'your_app_id',
    secret: 'your_app_secret',
    intents: ['GUILD_MESSAGES'],
    mode: ReceiverMode.WEBHOOK,
    port: 3000,                    // 必填:监听端口
    path: '/webhook',              // 必填:监听路径
})

中间件模式

typescript
import { Bot, ReceiverMode, ApplicationPlatform } from 'qq-official-bot'

const bot = new Bot({
    appid: 'your_app_id',
    secret: 'your_app_secret',
    intents: ['GUILD_MESSAGES'],
    mode: ReceiverMode.MIDDLEWARE,
    application: ApplicationPlatform.EXPRESS, // 必填:Express 或 Koa
})

🎯 事件订阅 (Intents)

可用的 Intent 列表

Intent描述适用范围
GUILDS频道变更事件所有机器人
GUILD_MEMBERS频道成员变更事件所有机器人
GUILD_MESSAGES私域频道消息事件私域机器人
PUBLIC_GUILD_MESSAGES公域频道消息事件公域机器人
GUILD_MESSAGE_REACTIONS频道消息表态事件所有机器人
DIRECT_MESSAGE频道私信事件所有机器人
GROUP_AT_MESSAGE_CREATE群聊@消息事件有群权限的机器人
C2C_MESSAGE_CREATE私聊消息事件有私聊权限的机器人
MESSAGE_AUDIT消息审核事件所有机器人
FORUMS_EVENTS论坛事件私域机器人
AUDIO_ACTIONS音频操作事件所有机器人
INTERACTION互动事件所有机器人

Intent 配置示例

typescript
// 私域机器人配置
const privateBotIntents = [
    'GUILD_MESSAGES',           // 频道消息
    'GUILD_MESSAGE_REACTIONS',  // 消息表态
    'DIRECT_MESSAGE',           // 私信
    'GUILDS',                   // 频道变更
    'GUILD_MEMBERS',            // 成员变更
]

// 公域机器人配置
const publicBotIntents = [
    'PUBLIC_GUILD_MESSAGES',    // 公域频道消息
    'GUILD_MESSAGE_REACTIONS',  // 消息表态
    'DIRECT_MESSAGE',           // 私信
]

// 群机器人配置
const groupBotIntents = [
    'GROUP_AT_MESSAGE_CREATE',  // 群@消息
    'C2C_MESSAGE_CREATE',       // 私聊消息
]

📊 日志级别

typescript
type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal'
级别描述
trace最详细的日志信息
debug调试信息
info一般信息(默认)
warn警告信息
error错误信息
fatal致命错误

🌍 环境配置

沙箱与生产环境

typescript
// 开发环境(沙箱)
const devBot = new Bot({
    appid: 'your_app_id',
    secret: 'your_app_secret',
    sandbox: true,              // 使用沙箱环境
    logLevel: 'debug',          // 详细日志
    // ...其他配置
})

// 生产环境
const prodBot = new Bot({
    appid: 'your_app_id',
    secret: 'your_app_secret',
    sandbox: false,             // 使用生产环境
    logLevel: 'info',           // 普通日志
    // ...其他配置
})

⚡ 最佳实践

1. 使用环境变量

typescript
// .env 文件
QQ_BOT_APPID=your_app_id
QQ_BOT_SECRET=your_app_secret
QQ_BOT_SANDBOX=false

// 配置文件
const bot = new Bot({
    appid: process.env.QQ_BOT_APPID!,
    secret: process.env.QQ_BOT_SECRET!,
    sandbox: process.env.QQ_BOT_SANDBOX === 'true',
    // ...其他配置
})

2. 类型安全的配置

typescript
import { defineConfig, ReceiverMode } from 'qq-official-bot'

const config = defineConfig({
    appid: 'your_app_id',
    secret: 'your_app_secret',
    mode: ReceiverMode.WEBSOCKET,
    intents: ['GUILD_MESSAGES', 'DIRECT_MESSAGE'],
    sandbox: false,
    logLevel: 'info',
})

const bot = new Bot(config)

3. 条件配置

typescript
const isDev = process.env.NODE_ENV === 'development'

const bot = new Bot({
    appid: 'your_app_id',
    secret: 'your_app_secret',
    sandbox: isDev,
    logLevel: isDev ? 'debug' : 'info',
    maxRetry: isDev ? 3 : 10,
    mode: ReceiverMode.WEBSOCKET,
    intents: ['GUILD_MESSAGES'],
})