# ChatBot **Repository Path**: light22/chat-bot ## Basic Information - **Project Name**: ChatBot - **Description**: QQ频道聊天机器人 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2023-07-29 - **Last Updated**: 2025-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 欢迎使用星光AI助手Bot 本聊天机器人通过QQ官方开放平台机器人接入QQ频道聊天,同时通过第三方协议框架NapCat接入QQ群聊及私聊。主要功能为AI聊天及AI绘图。目前已接入DeepSeek和百度文心大模型,DeepSeek支持AI对话、查询模型列表以及查询余额等功能;百度文心一言支持AI文字生成、AI图片生成、查询模型列表等功能。上述模型均支持连续对话,预设机器人角色的人设等。需用户自备DeepSeek和百度文心一言的API Key。 ## 一、前期准备 + 如需在QQ群或私聊中使用机器人,需要准备一个QQ号用于登录机器人ncbot,由于该机器人是通过第三方框架实现,非官方机器人,使用过程中可能会被QQ官方风控甚至封号,因此建议使用小号登录机器人,不要使用自己的大号,避免给自己造成不必要的损失。 + 如需在QQ频道使用机器人,需要前往QQ开放平台,注册账号并创建机器人,并将机器人添加到你的频道。详情参考:[QQ机器人文档](https://bot.q.qq.com/wiki/) + 如需使用DeepSeek相关功能,需要前往DeepSeek开放平台,注册账号并创建API Key。使用过程中可能产生费用,具体参见官方资费说明。详情参考:[DeepSeek 开放平台](https://platform.deepseek.com/api_keys) + 如需使用百度文心一言相关功能,需要前往百度千帆应用开发者中心,注册账号,并创建API Key。使用过程中可能产生费用,具体参见官方资费说明。详情参考:[百度智能云文档](https://cloud.baidu.com/doc/qianfan-docs/s/qm8qxemze) ## 二、安装及配置教程 + 开发环境的搭建 + 下载并安装Python:[Download Python](https://www.python.org/downloads/) + 下载并安装Git:[Download Git](https://git-scm.com/download/win) + 克隆本仓库到本地 ``` git clone https://gitee.com/light22/chat-bot.git ./ChatBot ``` + 安装依赖 ``` cd ChatBot pip install -r requirements.txt ``` + 下载安装 [wkhtmltopdf](https://wkhtmltopdf.org/downloads.html) **并将安装路径下 /bin 目录添加到系统环境变量path中**。 + 下载安装NapCat,安装及配置步骤参见:[NapCat | NapCatQQ](https://napcat.napneko.icu/guide/start-install) + 将 config目录下所有以 `_example.yaml`结尾的文件重命名,将文件名中 `_example`字段删除,更名后得到以下文件名 ``` ds_config.yaml ernie_config.yaml ncbot_config.yaml qqbot_config.yaml ``` + Linux系统安装及配置教程 详见:[Linux安装及配置方法](docs/Linux-install.md) ## 三、功能配置 ### 群聊天机器人(ncbot)配置 - 用编辑软打开 `config\ncbot_config.yaml`文件,配置文件如下: ``` # ncbot总开关 enable_ncbot: true # 开启/关闭ncbot,可选true/false # 群聊开关 enable_group: true # 开启/关闭群聊功能,可选true/false # 私聊开关 enable_private: true # 开启/关闭私聊功能,可选true/false # 服务器配置 listen_host: "localhost" # 服务器监听地址 listen_port: 8765 # 服务器监听端口 # 日志配置 log_level: "INFO" # 日志级别,可选 DEBUG、INFO、WARNING、ERROR、CRITICAL log_file_level: "INFO" # 日志文件级别,可选 DEBUG、INFO、WARNING、ERROR、CRITICAL ``` 文件配置说明: - `enable_ncbot`:ncbot机器人总开关,可选true/false。 - `enable_group`:是否开启群聊功能,可选true/false。 - `enable_private`:是否开启私聊功能,可选true/false。 - `listen_host`:机器人监听地址,默认为localhost。 - `listen_port`:机器人监听端口,默认为8765。 - `log_level`:日志级别,可选 DEBUG、INFO、WARNING、ERROR、CRITICAL。 - `log_file_level`:日志文件级别,可选 DEBUG、INFO、WARNING、ERROR、CRITICAL。 通常情况下,保持默认即可,如有特殊需求,可根据自己的需求进行修改。 - 运行NapCat并登录QQ小号(安装及配置方式详见[NapCat | NapCatQQ](https://napcat.napneko.icu/guide/start-install)) - 浏览器访问 `http://localhost:6099/webui/` 登录NapCat,并进入机器人管理页面(这里的地址和端口根据自己的配置会有不同,本文档以默认配置本地运行为例,如果是在远程服务器运行请自行查找相关教程)。![1750862845327](image/Readme/1750862845327.png) - 点击左侧【网络配置】,然后点击【新建】,选择Websocket客户端![1750863359984](image/Readme/1750863359984.png) - 在弹出的对话框中将【启用】打开,【名称】随便填一个名字,【URL】要根据 `ncbot_config.yaml`文件中配置的监听地址和监听端口填写,比如监听地址是 `localhost`,监听端口是 `8765`则这里填 `ws://localhost:8765` 将【上报自身消息】打开,其它保持默认,然后点击【保存】 ![1750863986117](image/Readme/1750863986117.png) ### QQ频道机器人(qqbot)配置 - 用编辑软打开 `config\qqbot_config.yaml`文件,配置文件如下: ``` # qqbot总开关 enable_qqbot: true # 开启/关闭qqbot,可选true/false # 配置qqbot的账号信息 appid: "XXXXXXXXXXXXXXX" secret: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" # 日志配置 log_level: "INFO" # 日志级别,可选 DEBUG、INFO、WARNING、ERROR、CRITICAL log_file_level: "INFO" # 日志文件级别,可选 DEBUG、INFO、WARNING、ERROR、CRITICAL ``` 文件配置说明: - `enable_qqbot`:qqbot机器人总开关,可选true/false。 - `appid`:qqbot机器人的APPID,在QQ开放平台创建机器人后获得。 - `secret`:qqbot机器人的密钥,在QQ开放平台创建机器人后获得。 - `log_level`:日志级别,可选 DEBUG、INFO、WARNING、ERROR、CRITICAL。 - `log_file_level`:日志文件级别,可选 DEBUG、INFO、WARNING、ERROR、CRITICAL。 这里如果不需要QQ频道聊天功能直接将总开关设置为false即可,后面的配置可以不修改,如果需要QQ频道聊天功能则需要正确填写QQ机器人的APPID和密钥。 ### DeepSeek配置 - 用编辑软打开 `config\ds_config.yaml`文件,配置文件如下: ``` # deepseek配置 # api_key api_key: "sk-XXXXXXXXXXXX" # 聊天模型 model_name: "deepseek-reasoner" # deepseek-chat 对应 DeepSeek-V3模型,偏向于聊天,deepseek-reasoner 对应 DeepSeek-R1 模型,偏向于推理。 # 机器人身份预设 bot_name: "阿晴" # 机器人昵称(只是聊天时的昵称,与QQ昵称无关) bot_role: "你的名字叫阿晴,擅长玩游戏,同时在动漫、二次元以及编程方面也有着深厚的造诣。回答时可以用自己的话来描述自己的感受,但不要过于夸张。" # 机器人角色 welcome_words: "欢迎使用DeepSeekAI小助手" # 机器人欢迎语 # 敏感词列表 sensitive_words: ["狗屁不通", "傻逼", "脑残", "傻B", "煞笔"] # 敏感词列表,机器人会自动屏蔽包含这些词语的消息。 ``` 文件配置说明: - `api_key`:DeepSeek API Key,在DeepSeek开放平台创建API Key后获得。 - `model_name`:聊天模型,可选 deepseek-chat 或 deepseek-reasoner,deepseek-chat 对应 DeepSeek-V3模型,偏向于聊天,deepseek-reasoner 对应 DeepSeek-R1 模型,偏向于推理。 - `bot_name`:机器人昵称,根据自己的喜好给机器人取一个昵称。 - `bot_role`:机器人角色,可以对机器人的性别、年龄、背景故事、性格以及说话的风格等进行描述。 - `welcome_words`:机器人欢迎语,这个欢迎语会出现在聊天的标题位置。 - `sensitive_words`:敏感词列表,机器人会自动屏蔽包含这些词语的消息,并给出提示。 以上配置项 `api_key`为必填项,需正确填写用户在DeepSeek开放平台创建的API Key,否则无法使用DeepSeek相关功能;其它配置项均可根据自己的喜好进行自行配置。 ### 百度文心一言配置 - 用编辑软打开 `config\ernie_config.yaml`文件,配置文件如下: ``` # 文心一言配置 # api_key api_key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" # 聊天模型 model_name_text_generate: "ernie-4.5-turbo-128k" # 文本生成模型,ernie-3.5-8k 对应 ERNIE-3.5B 模型,适合生成长文本。ernie-2.0-en 对应 ERNIE-2.0-EN 模型,适合生成短文本。 # 图片生成模型 model_name_image_generate: "irag-1.0" # ERINE iRAG # 机器人身份预设 bot_name: "文文" # 机器人昵称 bot_role: "你的名字叫文文,生性活泼,擅长写作、文学创作,对文言文、古诗文、诗词、散文、散文随笔等都有着浓厚的兴趣。内心暗恋着与你对话的人。" # 机器人角色 welcome_words: "欢迎使用文心一言" # 机器人欢迎语 # 敏感词列表 sensitive_words: ["狗屁不通", "傻逼", "脑残", "傻B", "煞笔"] # 敏感词列表,机器人将屏蔽包含这些词语的消息。 ``` 文件配置说明: - `api_key`:百度文心一言 API Key,在百度智能云创建API Key后获得。 - `model_name_text_generate`:文本生成模型,可选 ernie-3.5-8k 或 ernie-2.0-en,ernie-3.5-8k 对应 ERNIE-3.5B 模型,适合生成长文本,ernie-2.0-en 对应 ERNIE-2.0-EN 模型,适合生成短文本。 - `model_name_image_generate`:图片生成模型,可选 irag-1.0,具体参考官方文档说明:[模型列表](https://cloud.baidu.com/doc/qianfan-docs/s/7m95lyy43)。 - `bot_name`:机器人昵称,根据自己的喜好给机器人取一个昵称。 - `bot_role`:机器人角色,可以对机器人的性别、年龄、背景故事、性格以及说话的风格等进行描述。 - `welcome_words`:机器人欢迎语,这个欢迎语会出现在聊天的标题位置。 - `sensitive_words`:敏感词列表,机器人将屏蔽包含这些词语的消息,并给出提示。 以上配置项 `api_key`为必填项,需正确填写用户在百度智能云创建的API Key,否则无法使用百度文心一言相关功能;其它配置项均可根据自己的喜好进行自行配置。 ## 四、使用教程 以上配置均完成之后即可运行机器人。 + 运行机器人: + 进入机器人主目录,在机器人主目录打开终端。 + 运行main.py ``` python main.py ``` 运行后如果配置文件中开启了qqbot机器人,则会自动登录qqbot机器人。当看到控制台类似这样的显示 ``` 2025-06-2503:02:41,805 - qqbot - INFO - qqbot.py:79 - on_ready - 「机器人名称」 [2025-06-2503:02:41]准备就绪! ``` 则表示qqbot机器人登录成功。 如果配置文件中开启ncbot机器人,则会根据配置文件中监听地址和端口自动监听端口,等待客户端连接。此时控制台会显示类似这样的内容 ``` 2025-06-25 02:22:50,840 - ncbot - INFO - ncbot.py:1065 - ncbot_run - [2025-06-25 02:22:50]NCBot启动成功 2025-06-25 02:22:50,841 - ncbot - INFO - ncbot.py:1066 - ncbot_run - [2025-06-25 02:22:50]服务器监听地址:ws://localhost:8765 2025-06-25 02:22:50,841 - ncbot - INFO - ncbot.py:1067 - ncbot_run - 正在等待连接... ``` 表示ncbot机器人启动成功,等待客户端连接。 + 运行NapCat,NapCat配置正确后运行后会自动登录设置好的QQ号,并根据网络设置的Websocket客户端配置的地址和端口,自动连接机器人,当连接成功后,控制台会显示类似这样的内容 ``` 2025-06-25 02:22:55,703 - ncbot - INFO - ncbot.py:94 - handler - [2025-06-25 02:22:55] 客户端 ::1 连接成功 2025-06-25 02:22:55,706 - ncbot - INFO - ncbot.py:110 - handler - [2025-06-25 02:22:55] 机器人登录成功:来看烟花吧(3527258719) ``` 当看到登录成功的提示,并显示机器人的昵称和QQ号时,表示机器人登录成功。此就可以与机器人进行聊天了。 + 使用指令进行聊天(在QQ频道、群聊和与机器人的私聊窗口中输入聊天指令即可与机器人进行对话): + 在QQ频道中有两种机器人:公域机器人和私域机器人,公域机器人只会响应@机器人的消息,私域机器人则不必需@机器人。因此,如果你创建的是公域机器人必须使用 `@机器人 指令`来进行对话,而如果你创建的是私域机器人的话则可以直接打命令来和机器人对话。 + 在QQ群中可以直接输指令来进行对话,也可以 `@机器人 指令`来进行对话,两种方式都识别 ## 五、聊天指令 ### DeepSeekAI指令 - /DS对话:AI对话(指令后跟对话内容,例如 `/ds对话 简述一下AI大模型的用途`) - /DS模型:列出所有模型 - /DS余额:查询余额 - /DS重置:重置会话 - /DS帮助:显示帮助信息 ### 文心一言指令 - /文心一言:AI生成文本(指令后跟对话内容) - /文心画图、/文心绘图:AI生成图片(指令后跟生成图片的描述) - /文心模型:列出所有模型 - /文心重置:重置会话 - /文心帮助:显示帮助信息 以上指令DS不区分大小写,指令后跟内容时可以用空格分隔,也可以不用,指令前可以加 `/`或者 `#`引导也可以不加,可以@机器人 指令,也可以直接输指令。 例如以下指令均可以被识别: ``` @机器人 DS对话 简述一下AI大模型的用途 @机器人 /ds模型 #ds余额 ds重置 ``` 但需要注意的地方有:指令一定要出现在对话开头,如果有@机器人则一定要在@机器人后面接指令,指令中间不可有空格等其它字符。 例如以下指令均存在问题: ``` DS 对话 简述一下AI大模型的用途 # 指令中间有空格,无法识别 机器人/DS对话 简述一下AI大模型的用途 # 指令没有出现在开头,无法识别 简述一下AI大模型的用途 /ds对话 # 指令没有出现在开头,无法识别 #ds对话@机器人简述一下AI大模型的用途 # 该指令虽然会被识别,但@机器人会被识别成对话内容传给大模型,可能导致生成的文本不准确 ```