跳到主要内容

安装

安装 IdhagnBot

IdhagnBot 的开发主要在 ArchLinux 上完成,且需要至少 Python 3.8(建议使用 3.10,部分插件不能在 3.11 中使用),不保证在 Windows 或 MacOS 上的兼容性,如有问题或需求可以发起 Issue

以下命令请根据发行版替换。

sudo pacman -S cairo pango gobject-introspection python-pdm
git clone https://github.com/su226/IdhagnBot.git
cd IdhagnBot
# 只安装基础功能
pdm install
# 或者安装全部功能
# 编译 python-libzim 时需要安装 libzim,但使用 PyPI 上的二进制包时不需要,可自行去除
sudo pacman -S libyaml bubblewrap nodejs npm libqalculate libzim
pdm install -G :all
信息

在 Windows 安装和搭建 IdhagnBot 可能需要用到 MSYS2(未测试)

pacman -S mingw-w64-cairo mingw-w64-pango mingw-w64-gobject-introspection

你可以参考 PyGObject 的官方文档 等资料

目前 MSYS2 不提供 python-pdm 包(参见 https://packages.msys2.org ),你需要参考 PDM 的官方文档 安装PDM

配置协议端

你需要安装一个 OneBot V11(原CQHTTP)协议端,并且选择一个驱动器,这里以 go-cqhttp 和 AIOHTTP(正向WebSocket连接)为例。

AIOHTTP 也作为其他插件的HTTP库使用,因此使用其他驱动器也必须安装。使用其他驱动器理论上不会有问题,但使用 go-cqhttp 以外的协议端未经充分测试。

可参考 Nonebot2 的文档:

信息

本项目并不使用 nb-cli,请使用 pip 或 pdm 安装相关依赖。

你可以使用 Nonebot2 文档中所写的 .env 来配置 Nonebot2

DRIVER=~aiohttp
ONEBOT_WS_URLS=["ws://127.0.0.1:6700"] # 要与协议端的端口号一致
SUPERUSERS=[123456789, 9876543210] # 超管用户 QQ 号,可以指定多个,将会接收到出错等消息

或者如果你希望 Nonebot2 配置文件和其他配置文件一样使用 YAML 的话,你可以使用 configs/nonebot.yaml

driver: ~aiohttp
onebot_ws_urls: # 端口号要与协议端一致
- ws://127.0.0.1:6700
superusers: # 超管用户 QQ 号,可以指定多个,将会接收到出错等消息
- 123456789
- 987654321

其他配置文件请参考接下来的文档。

启动

使用 pdm start 即可启动机器人,如果你需要机器人长期运行,可以使用 tmux 或者编写 Systemd 服务。

tmux 的用法和编写 Systemd 服务可参考:

Systemd 服务参考(IdhagnBot)
[Unit]
Description=Idhagn Chatbot
Wants=go-cqhttp.service
After=go-cqhttp.service

[Service]
Type=simple
WorkingDirectory=工作目录
ExecStart=pdm run start
Restart=on-failure
User=用户

[Install]
WantedBy=multi-user.target
Systemd 服务参考(go-cqhttp)
[Unit]
Description=go-cqhttp Chatbot Backend
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
WorkingDirectory=工作目录
ExecStart=工作目录/go-cqhttp -d -faststart
Restart=on-failure
User=用户

[Install]
WantedBy=multi-user.target

目录结构

安装完成后的 IdhagnBot 有如下的目录结构,其中带 ⚠️ 的在 .gitignore 内并且可能需要自行创建。

📁IdhagnBot
|-📁⚠️ configs 配置目录,如果对应插件没有配置,会在日志中提示
| |-📁 * 插件群配置
| | |-📄 群号.yaml
| | \-📄 default.yaml 在创建不存在的群配置且default.yaml存在时,会自动复制一份
| |-📄 *.yaml 插件共享配置
| \-📄 nonebot.yaml 另一种Nonebot2配置文件
|-📁 plugins Nonebot2插件(含所需的资源)
| |-📁 * 较为复杂,包含资源文件或分多个模块的插件为文件夹
| \-📄 *.py 一些简单的插件通常是单文件
|-📁⚠️ resources 用户自定义资源
|-📁⚠️ states 状态文件,用于记录缓存、统计数据等,可能被自动修改,而配置一定只能手动修改(不建议手动编辑)
| |-📁 * 插件群状态
| | |-📄 群号.yaml
| | \-📄 default.yaml 尽管状态也支持default.yaml,但并不建议使用
| \-📄 *.yaml 插件共享状态
|-📁⚠️ user_plugins 用户插件,可以根据自己的需要拓展机器人功能
|-📁 util 插件之间共用的代码
|-📄⚠️ .env* Nonebot2配置文件(也可使用configs/nonebot.yaml,见上文)
|-📄 .gitignore
|-📄 bot.py 机器人主程序
|-📄 pdm.lock
|-📄 pyproject.yaml
|-📄 README.md
\-📄 LICENSE