这两天在搭qqBot,记录一下
整体技术
在遇到风控问题时,我使用了unidbg-fetch-qsign。
过程
整个过程比我着手搭建前所想的要困难许多,踩了许多坑。不过很棒的一点是,这三个项目的issue都十分活跃。我踩的坑,在issue中几乎都能搜到。我使用过的开源项目不多,但这三个给了我很好的印象,希望自己以后能做些自己的贡献。
之前没想到最难的一点不是机器人程序的编写,而在于登录。我使用的号是新号(创建一个礼拜左右),风控等级比较高。
而我的需求是:将bot部署在地点在非我所在地的一个服务器上,这更是增加了被风控的概率。
尝试许多种方法后,我最终的解决方法是:
- 在本地先使用手表协议扫码登录。(
"sort_version_name":8.9.73
,protocol:2
) - 成功登录后将得到的文件移至服务器上并配置
signsever
,再次进行登录
但最后bot还是被风控,无法发送群消息。
我短时间内也不想再进一步折腾了。
今天把自己写的插件EuDs63/nonebot-plugin-yesman: nonebot2 插件发布到插件商店 | NoneBot了。过了一遍插件发布的流程,还蛮有意思的。有几点值得说下:
- Create an account · PyPI的username要求是我见过的最苛刻的。但也能理解。
Choose a strong password that contains letters (uppercase and lowercase), numbers and special characters. Avoid common words or repetition.
- About NoneFlow 好强大。有机会想自己试试写一个类似的,或者了解是怎么做到的。
- Create an account · PyPI的username要求是我见过的最苛刻的。但也能理解。
今天go-cqhttp在QQ Bot的未来以及迁移建议宣布不再维护了。感受到一种无力感。
感想
- 想起搭telegram bot时,只需要申请一个token,甚至教程官方都有在写。而这里却是道高一尺魔高一丈般的猫鼠游戏。不免五味杂陈。
- nonebot这种插件系统我觉得很棒。省了不少力气。
- 感觉qqBot可玩性还是蛮高的,在其他群里也常常能见到些有趣的bot。但可惜的是腾讯的态度。
收获
nohup
- 使用: 例:
nphup nb run
- 关闭: 例:
ps aux | grep `nb` #找到对应的进程号 kill $进程号
守护进程(Systemd)
注:以下复制自使用 NoneBot2 和 go-cqhttp 打造自己的 FF14 QQ 机器人- 创建
# vim /lib/systemd/system/go-cqhttp.service [Unit] Description=GO-CQHTTP Wants=network-online.target After=network-online.target [Service] Type=simple User=root WorkingDirectory= GO-CQHTTP的运行目录 ExecStart= nohup go-cqhttp KillMode=process [Install] WantedBy=multi-user.target
- 使用
systemctl status go-cqhttp #查看状态 systemctl enable go-cqhttp #启用开机自启 systemctl restart go-cqhttp #重启进程 systemctl stop go-cqhttp #停止进程 systemctl start go-cqhttp #开始进程
- python虚拟环境
- 新建
python -m venv myenv # 创建一个名为myenv的虚拟环境
- 激活
source ./qqVenv/bin/activate # bash source ./qqVenv/bin/activate.fish # fish
尾巴
- go-cqhttp在QQ Bot的未来以及迁移建议中宣布不再维护
- 不久后,QQ Bot的未来以及迁移建议上所提到的可能的替代方案也相继无法使用
我感谢这些作者!