折腾NoneBot
本文最后更新于:2022年5月2日 凌晨
Pay Attention!!!
Pay Attention!!!
Pay Attention!!!
因为 NoneBot 项目更新,本篇博客内容已无参考性!!!
因为 NoneBot 项目更新,本篇博客内容已无参考性!!!
因为 NoneBot 项目更新,本篇博客内容已无参考性!!!
(等有时间了整个新的)
折腾NoneBot 2
看群里机器人挺有意思,然后翻学长GitHub(Reverier-Xu和Frank)的时候翻到了这个叫NoneBot的东西,就动手搞搞,刚好手头有不用的小号
全程在Manjaro下进行
参考资料
在centos上装载NoneBot2_ChenYX的博客-CSDN博客
manjaro下python创建虚拟环境 | Just for Life. (muyuuuu.github.io)
Arch/Manjaro安装deb安装包 - 简书 (jianshu.com)
virtualenvwrapper 的安装与使用 - Tiac - 博客园 (cnblogs.com)
概览
NoneBot2 是一个可扩展的 Python 异步机器人框架,它会对机器人收到的事件进行解析和处理,并以插件化的形式,按优先级分发给事件所对应的事件响应器,来完成具体的功能。
除了起到解析事件的作用,NoneBot 还为插件提供了大量实用的预设操作和权限控制机制。对于命令处理,它更是提供了完善且易用的会话机制和内部调用机制,以分别适应命令的连续交互和插件内部功能复用等需求。
需要注意的是,NoneBot 仅支持 Python 3.7+
Linux pip安装速度慢(超时报错),为pip换源
pip.conf
中内容如下:
安装
虚拟环境
为了装载 NoneBot2 并保证相关配置包不会冲突,我们需要安装一个纯净的 python 空间。这里我们就要用到 virtualenv 工具包了。
virtualenvwrapper 是一个python项目环境管理工具,一个项目一个独立环境(可随心切换),防止不同项目依赖环境的相互污染。
virtualenv 的安装
首先使用 pip 命令安装两个需要的包
如果 pip 软链接没有修改成 pip3 的话要输入 pip3
然后创建一个文件夹,用于存放所有的虚拟环境:
注意:安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:
首先查看一下 virtualenvwrapper.sh
和 python3
的安装目录
修改文件 .bashrc
,这就是用户配置文件
文件末尾添加
这里注意,WORKON_HOME的绝对路径需要填写你刚刚创建的文件夹地址。source 里要填写你刚刚 pip 安装 virtualenvwrapper 的位置,就是上面找到的
再然后更新环境变量
激活
在终端输入
创建虚拟环境
进入虚拟环境后命令行会有所变化。(一定不要sudo
)
如果报错了,说明我们没有给 virtualenv
创建软链接,然后就ok了
如果出现类似virtualenv: error: argument dest: the destination . is not write-able at /usr/local/virtualenvs
的错误
该错误是由于.virtualenvs没有可写的权限引起的,可对该文件赋予可读可写可执行的权限
之后再次创建虚拟环境
列出虚拟环境
启动虚拟环境
退出虚拟环境
删除虚拟环境
安装NoneBot
一定要进入虚拟环境
通过脚手架安装
使用 pip
或 其他包管理工具 安装 nb-cli
,nonebot2
会作为其依赖被一起安装
这样我们就安装完成了,可以发现这里会安装一大堆的包,如果不在虚拟环境中很难保证不会产生冲突。
我们尝试运行下面命令,在虚拟环境目录下搭建一个机器人工程进行测试
记得换好目录,我忘了……bot现在在 /home/cyk/
然后一步一步安装就行(协议端使用的是cqhttp)
搭建完成后,我们可以在目录下可以看到一个和你bot名字一样的文件夹
进入后 bot.py
,就是我们的机器人初始化代码。而 src 内(或者和你bot名字一样的文件夹)的 plugins 文件夹则是我们存放机器人插件的地方
插件我们可以自己编写然后存入 plugins 中,也可以直接安装官方大佬们编写的插件使机器人可以快速上线
安装插件
插件可以通过 nb-cli
进行安装,也可以自行安装并加载插件。
加载插件
加载内置插件
在 bot.py
文件中添加以下行
WARNING
目前, 内建插件仅支持 CQHTTP 的 Adapter
如果您使用的是其他 Adapter, 请移步该 Adapter 相应的文档
这将会加载 nonebot 内置的插件,它包含:
- 命令
say
:可由superuser使用,可以将消息内容由特殊纯文本转为富文本 - 命令
echo
:可由任何人使用,将消息原样返回
以上命令均需要指定机器人,即私聊、群聊内@机器人、群聊内称呼机器人昵称。参考 Rule: to_me
加载插件目录
在 bot.py
文件中添加以下行
提示
加载插件目录时,目录下以
_
下划线开头的插件将不会被加载!不能存在相同名称的插件!
加载单个插件
在 bot.py
文件中添加以下行
其他方式
看文档
运行结果
尝试运行 nb run
或者 python bot.py
,可以看到日志输出了类似如下内容
CQHTTP 协议使用指南
配置 CQHTTP 协议端(以 QQ 为例)
单纯运行 NoneBot 实例并不会产生任何效果,因为此刻 QQ 这边还不知道 NoneBot 的存在,也就无法把消息发送给它,因此现在需要使用一个无头 QQ 来把消息等事件上报给 NoneBot。
QQ 协议端举例:
- go-cqhttp(基于 MiraiGo)
- cqhttp-mirai-embedded
- Mirai+ cqhttp-mirai
- Mirai+ Mirai Native+ CQHTTP
- OICQ-http-api(基于 OICQ)
这里以 go-cqhttp为例
下载 go-cqhttp 对应平台的 release 文件,点此前往
我下载的
go-cqhttp_1.0.0-beta4_linux_arm64.deb
下载速度好慢的,找到个加速的网站
Github 加速下载 - 在线工具 (zygxsq.cn)
安装教程
manjaro安装deb包 - 知乎 (zhihu.com)
不过我包解出来后双击安装的~
运行 exe 文件或者使用
./go-cqhttp
启动生成默认配置文件并修改默认配置(机器人目录下的
config.yml
)
其中 ws://127.0.0.1:8080/cqhttp/ws
中的 127.0.0.1
和 8080
应分别对应 nonebot 配置的 HOST 和 PORT。
如果要修改
在机器人目录打开终端
打开该文件,里面的 host 和 port 就是我们工程与 cqhttp 建立联系的通道地址
cqhttp
是前述 register_adapter
时传入的第一个参数,代表设置的 CQHTTPBot
适配器的路径,你可以对不同的适配器设置不同路径以作区别。
启动机器人
注意go-cqhttp目录
我的是在/usr/bin/go-cqhttp
打开一个终端
也可设置后台启动
机器人目录下打开终端(注意要在虚拟环境下)
Accepted!好耶