QBot
浅尝 qqBot
使用的是 UV(python3.12)+nonebot2+Lagrange.OneBot 框架,实现了一个简单的 qqBot。
全手工配置
有用 uv 所以使用 nonebot2 的脚手架工具的话有点麻烦,需要嵌套一层 venv,而且不能使用nb pip ...所以就手动配置了。
File Tree
通常来说是这样去配置一个qqbot的
D:.
| .env # nonebot 主配置文件
| .env.dev # nonebot 开发配置文件
| .env.prod # nonebot 生产配置文件
| .python-version # uv管理 python 版本
| bot.py # bot程序入口
| botRun.bat # 启动 bot 的批处理文件
| pyproject.toml # uv 配置文件
| README.md # 项目说明文件
| uv.lock # uv 锁文件
|
+.venv # uv 虚拟环境
|| .gitignore # git 忽略文件
|| .lock # uv 锁文件
|| CACHEDIR.TAG # uv 缓存文件
|| pyvenv.cfg # uv 配置文件
|+-Lib # uv 虚拟环境库
|\-Scripts # uv 虚拟环境脚本
|
+Lagrange.OneBot # Lagrange.OneBot文件
|| appsettings.json # Lagrange.OneBot配置文件
|| device.json # Lagrange.OneBot登录环境信息
|| keystore.json # Lagrange.OneBot登录用户文件
|| Lagrange.OneBot.exe # Lagrange.OneBot主程序
|| qr-0.png # Lagrange.OneBot登录二维码
|\-lagrange-0-db # Lagrange.OneBot数据库
|
\src # nonebot2项目文件
|__init__.py # 项目包
+---common # 公共工具文件
| __init__.py # 项目包
+---message_manager.py # 消息管理器
| receiver.py # 消息接收器
| sender.py # 消息发送器
| __init__.py # 项目包
+---plugins # 非消息插件
| admin_manage_bot.py # 管理bot插件
| __init__.py # 项目包
\---processors # 消息处理器
__init__.py # 项目包
配置 Lagrange.OneBot
首先要登录上 qq
- 这里用到的是Lagrange.OneBot_win-x64_net9.0_SelfContained.zip点击下载,找打自己对应的系统版本下载。
- 解压后,在目录下找到
Lagrange.OneBot.exe执行,第一次执行后退出。 - 打开文件配置器按照需要进行配置,然后在目录下找到
appsettings.json文件,将里面的内容替换成文件配置器生成的配置。 - 执行
Lagrange.OneBot.exe,如果一切正常的话会显示一个二维码,使用手机 qq 扫描二维码登录即可。记得勾选下次登录无需确认 - 这样 QQ 就完成了登录配置。
配置 nonebot2
接下来就是配置 nonebot2 了(不会 uv 的点击),步骤仅供参考。
-
找个合适的位置
uv init -p 3.12 -q -
配置 python 解释器
uv run main.py -
安装 nonebot2+驱动器
uv pip install nonebot2[fastapi],当然也可以选择其他驱动器具体看这里 -
安装适配器(OneBotV11)
uv pip install nonebot-adapter-onebot当然也可以选择其他驱动器具体看这里 -
配置项目文件,没有就手动创建,有就直接改
.env,添加以下内容
#注释要删除 COMMAND_START=["/"] # 配置命令起始字符 COMMAND_SEP=["."] # 配置命令分割字符 ENVIRONMENT=dev # 配置环境 SUPERUSERS=["123456789"] # 配置超级用户.env.dev,添加以下内容
LOG_LEVEL=TRACE # 配置日志等级.env.prod,添加以下内容
LOG_LEVEL=INFO # 配置日志等级pyproject.toml,添加以下内容
[project] name = "qqbot" version = "0.1.0" description = "qqbot" readme = "README.md" requires-python = "<4.0,>=3.9" dependencies = [] [tool.nonebot] adapters = [ { name = "OneBot V11", module_name = "nonebot.adapters.onebot.v11" }, ] plugins = [] plugin_dirs = ["src"] builtin_plugins = ["echo"]uv.lock不建议直接写,直接uv lock生成
version = 1 revision = 3 requires-python = ">=3.9, <4.0" [options] prerelease-mode = "if-necessary" [[package]] name = "qqbot" version = "0.1.0" source = { virtual = "." }bot.py,添加以下内容
import nonebot # 导入 nonebot from nonebot.adapters.onebot.v11 import Adapter as ConsoleAdapter # 避免重复命名 # 初始化 NoneBot nonebot.init() # 注册适配器 driver = nonebot.get_driver() driver.register_adapter(ConsoleAdapter) # 在这里加载插件 nonebot.load_builtin_plugins("echo") # 内置插件 nonebot.load_plugins("src") # 本地插件,只要写道src文件当中就会自动加载进去,"_"开头的不会加载 if __name__ == "__main__": nonebot.run() # 启动 NoneBot
最后就是启动!启动!启动!!!
- windows下写一个
botRun.bat,还可用以后用在开机自启
:: 不显示命令行窗口
@echo off
:: 提示启动
echo 正在启动Lagrange.OneBot...
:: 进入目录,如果失败则提示并退出
cd /d "目录" || (
echo 无法进入目录
pause
exit /b 1
)
:: 启动Lagrange.OneBot
start "" "Lagrange.OneBot.exe"
:: 提示启动Nonebot2
echo 正在运行bot.py...
:: 进入目录,如果失败则提示并退出
cd /d "目录" || (
echo 无法进入目录
pause
exit /b 1
)
:: 启动bot.py,使用uv启动
uv run bot.py
:: 提示操作完成
echo 操作完成
pause
写个插件试试
ok啊,按照上述说的,现在尝试写个插件试试,我想让这个bot存活的时间长一点,就需要让这个bot更容易维护。
- 先写个统一出入口,实现发送什么就回复什么。

浙公网安备 33010602011771号