第一部分:准备工作
在开始写代码之前,你需要准备好以下几样东西:

-
一台可以24小时开机的服务器:
- 推荐:购买一台云服务器(如阿里云、腾讯云、Vultr、DigitalOcean等),学生用户可以享受非常优惠的价格。
- 不推荐:用自己的电脑,因为关机或休眠后机器人就会离线。
- 系统:推荐使用 Linux(如 Ubuntu 20.04 LTS),因为社区支持最好,命令行操作方便。
-
一个QQ账号:
- 重要:不要用你常用的、有重要好友的QQ号!因为机器人账号容易被风控封禁。
- 解决方案:可以去注册一个新的QQ号,专门用来做机器人。
-
获取QQ机器人的连接凭证:
- 目前官方已经不直接开放给个人用户申请了,主流的方式是使用第三方协议框架,它们通过反向技术连接到QQ,模拟客户端登录。
- 最流行的两个框架是:
- go-cqhttp:基于Go语言,性能高,配置灵活,是目前最主流的选择。
- OICQ:基于Node.js,在Node.js开发者中很受欢迎。
- 我们将以 go-cqhttp 为例进行讲解,因为它更稳定,功能也更全面。
第二部分:核心组件 - go-cqhttp 的配置与运行
“流年”机器人的“身体”go-cqhttp,我们需要先让它跑起来,并能接收消息。

步骤 1:下载并安装 go-cqhttp
- 登录你的云服务器(通过SSH)。
- 前往 go-cqhttp 的 releases 页面 下载最新版的Linux程序。
- 使用
wget命令下载(请替换链接中的版本号):wget https://github.com/Mrs4s/go-cqhttp/releases/download/v1.2.0/go-cqhttp-v1.2.0-linux-amd64.tar.gz
- 解压文件:
tar -zxvf go-cqhttp-v1.2.0-linux-amd64.tar.gz
- 进入解压后的目录,给
go-cqhttp添加执行权限:chmod +x go-cqhttp
步骤 2:首次运行,生成配置文件
在 go-cqhttp 所在目录,直接运行它:
./go-cqhttp
它会自动生成一个 config.yml 配置文件,并提示你使用扫码登录。
- 在你的电脑或手机上打开QQ,扫描终端中显示的二维码。
- 使用你为机器人准备的那个新QQ号扫码登录。
- 登录成功后,
go-cqhttp会自动退出。
步骤 3:配置 go-cqhttp
编辑 config.yml 文件,这是最关键的一步。
vim config.yml
你需要关注以下几个核心配置项:
# 账号相关
account:
uin: # 你的机器人QQ号
password: # 通常留空,使用扫码登录
# ... 其他账号配置
# HTTP通信设置,用于接收你的程序发送的指令
servers:
-
# 监听地址
host: 127.0.0.1
# 监听端口
port: 8080
# 访问密钥,非常重要!用于验证你的程序身份
access-token: "your_secret_token_here"
# 通信协议,http
protocol: http
# 你也可以启用WebSocket,对实时性要求高的程序推荐使用
-
host: 0.0.0.0
port: 8081
access-token: "your_secret_token_ws"
protocol: ws
# 日志等级,建议设置为 info 或 warn
log_level: info
配置说明:
account部分:uin会自动填入你的QQ号。servers部分:这是你编写的“流年”程序与go-cqhttp对话的桥梁。host和port定义了程序的监听地址和端口。access-token是一个安全令牌,必须设置,并且你的程序里也要用这个值,否则无法通信。
步骤 4:启动并测试
再次运行 go-cqhttp:
./go-cqhttp
如果看到 WS Server *:8081 和 HTTP Server *:8080 启动成功的日志,说明 go-cqhttp 已经在后台监听消息了。
第三部分:编写“流年”机器人的“大脑” (Python 示例)
我们将使用 Python 来编写机器人的逻辑,因为它简单易用,库丰富。
步骤 1:安装 Python 库
推荐使用 nonebot2,这是一个功能强大、生态完善的QQ机器人框架,能很好地与 go-cqhttp 配合。
在你的服务器上创建一个新的项目目录,liunian_bot。
mkdir liunian_bot cd liunian_bot
创建并激活一个虚拟环境(推荐):
python3 -m venv venv source venv/bin/activate # Linux/Mac # venv\Scripts\activate # Windows
安装 nonebot2:
pip install nonebot2
步骤 2:编写第一个插件
机器人功能是通过“插件”来实现的,我们先写一个最简单的“复读机”插件。
在 liunian_bot 目录下,创建一个 plugins 文件夹,并在里面创建一个 echo.py 文件。
mkdir plugins touch plugins/echo.py
编辑 echo.py 文件,写入以下代码:
from nonebot import on_message
from nonebot.adapters.onebot.v11 import MessageEvent, Message
from nonebot.matcher import Matcher
from nonebot.params import CommandArg
from nonebot import logger
# 创建一个消息匹配器,监听所有消息
echo_matcher = on_message()
# 使用正则表达式来触发,这里监听以 "复读" 开头的消息
@echo_matcher.handle()
async def handle_first_receive(matcher: Matcher, args: Message = CommandArg()):
# args 是命令后面的内容
if args:
# 如果有内容,就复读它
await matcher.send(args)
else:
# 如果没有内容,提示用户
await matcher.send("请告诉我你想复读什么内容哦~")
步骤 3:配置并启动 nonebot
在 liunian_bot 根目录下,创建一个 .env 文件来配置 nonebot。
touch .env
编辑 .env 文件,填入 go-cqhttp 的配置信息:
# 机器人连接的地址和端口 HOST=127.0.0.1 PORT=8080 # 之前在 config.yml 里设置的 access-token ACCESS_TOKEN=your_secret_token_here # 日志级别 LOG_LEVEL=INFO
在 liunian_bot 根目录下创建一个 main.py 文件来启动机器人:
import nonebot
# 加载插件
nonebot.load_from_toml("pyproject.toml")
if __name__ == "__main__":
nonebot.run()
为了让 nonebot 能找到我们的插件,还需要创建一个 pyproject.toml 文件:
touch pyproject.toml
编辑 pyproject.toml:
[tool.nonebot] plugin_dirs = ["plugins"]
步骤 4:启动你的“流年”机器人
在 liunian_bot 目录下,运行 main.py:
python main.py
如果一切顺利,你会看到 nonebot 启动的日志,你的“流年”机器人已经准备就绪了!
去QQ上找到你的机器人账号,给它发一句消息:
复读 这句话太酷了
机器人应该会回复:
这句话太酷了
恭喜!你已经成功搭建了“流年”机器人的核心功能!
第四部分:部署与高级功能
如何让机器人 24 小时在线?
你不能一直开着SSH终端,你需要使用 进程管理工具,最常用的是 systemd。
-
在
/etc/systemd/system/目录下创建一个服务文件,liunian.service:sudo vim /etc/systemd/system/liunian.service
-
写入以下内容(请根据你的实际路径修改):
[Unit] Description=Liunian QQ Bot After=network.target [Service] Type=simple User=你的服务器用户名 # root WorkingDirectory=/home/你的用户名/liunian_bot ExecStart=/home/你的用户名/liunian_bot/venv/bin/python /home/你的用户名/liunian_bot/main.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
-
启动并设置开机自启:
sudo systemctl daemon-reload sudo systemctl start liunian sudo systemctl enable liunian
即使你关闭了SSH连接,你的机器人也会在后台持续运行,你可以用 sudo systemctl status liunian 查看它的状态。
拓展“流年”的功能
“流年”这个名字很有意境,可以围绕这个名字开发很多有趣的功能:
-
每日一句/诗词:
- 每天定时在指定群聊或私聊发送一句优美的诗词、名人名言或祝福语。
nonebot提供了Scheduler(定时任务) 插件,可以轻松实现。
-
运势查询:
- 用户发送“流年 运势”,机器人返回随机的星座或今日运势。
- 可以调用一些免费的运势API。
-
群管功能:
/踢人 [成员]:踢出指定成员。/禁言 [成员] [时长]:禁言指定成员。/设置群名 [新名字]:修改群名。- 这些功能需要
nonebot调用go-cqhttp提供的 API 来操作群。
-
娱乐功能:
- 聊天机器人:接入图灵机器人、ChatGPT等API,让机器人能进行更智能的对话。
- 点歌:接入网易云/QQ音乐的API,实现点歌功能。
- AI绘画:接入 Midjourney/Stable Diffusion 的 API,根据用户描述生成图片。
-
信息查询:
- 天气查询:调用天气API,查询指定城市的天气。
- 时间查询:查询全球不同时区的时间。
- 翻译:调用翻译API,进行语言翻译。
如何学习更多?
- 阅读官方文档:
- 逛社区:
- nonebot 社区
- go-cqhttp 社区
- 在这些社区里你能找到大量现成的插件和开发者的帮助。
祝你开发顺利,打造出一个独一无二的“流年”机器人!
标签: 流年QQ机器人使用教程 流年QQ机器人功能详解 流年QQ机器人怎么设置