作为一名公主连结玩家,尤其作为是摸鱼会长,为了更好的组织成员打公会战和交♂流感情,给群里加入一个机器人(妈)将是不二的选择!说实话,当初配置(调教)妈也用了好几天,各种奇怪的bug和环境问题老难受,老折磨了≧ ﹏ ≦。为了新人避坑,就写个简单的教程吧,有空就写下怎么编一个简单的插件。
一. 准备
需要的东西主要有三样如下:服务器,go-cqhttp或者mirai,HoshinoBot
【12.17更新】更新mirai的食用方法。因为go-cqhttp使用中有大量的风险管控,会吞掉许多消息,所以如果真的想搞事建议使用mirai而不是go-cqhttp(当然go-cqhttp也不是绝对安全的)。
演示用版本:
服务器:CentOS 7.8,64位
Java:java 8/11
框架:go-cqhttp-v0.9.31 /mirai
HoshinoBot:最新即可
二. 结构说明
实际上,HoshinoBot是有一键安装脚本 的,但是这个脚本为了兼容环境用到了docker,虽然docker是有很多好处,但是要频繁更改机器人的配置和调试,稍微有点不方便(其实是不怎么会docker),所以就直接选择了screen挂起就好。为了后续开发,我觉得有必要讲下go-cqhttp和HoshinoBot的各自任务和交互方式。
如图,go-cqhttp相当于一个QQ客户端,负责接收群里(或者用户)的消息以及发送消息,在在基层。HoshinoBot为真正的机器人,与go-cqhttp通过反向ws建立连接(也可以ws或者http),go-cqhttp会转发一切收到的合法的消息给HoshinoBot,而HoshinoBot可以检测关键词产生回复。回复还是要先发给go-cqhttp,然后才能发到群里。除了被动发送消息,HoshinoBot本身可以设置定时任务等,主动发出消息。
emmm,还是挺清晰的结构,只要确保环回反向ws的时候两者的端口一致就可以进行通信。
三. 安装本体
1. 安装go-cqhttp
github上的releases库:https://github.com/Mrs4s/go-cqhttp/releases
用uname指令查看系统架构
如果显示x86_64则为64位系统,对应amd64
根据自己的系统版本选择相应的包下载,最新版本我不是很推荐,因为用go-cqhttp-v0.9.31-fix2
的时候,出现了大量“账号被风控”的情况,导致图片发不出去(才,才不是因为发的是涩图),后面测试发现go-cqhttp-v0.9.31
就没这个奇怪的bug了。 这里我选择的包为go-cqhttp-v0.9.31-linux-amd64
(https://github.com/Mrs4s/go-cqhttp/releases/download/v0.9.31/go-cqhttp-v0.9.31-linux-amd64)。
打开linux终端,依次输入如下指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #新建一个screen窗口并进入 #如果没有该命令则yum install screen安装,可以学下screen的简单用法 screen -S gocqhttp
#创建文件夹 sudo mkdir /home/qqbot/gocqhttp cd /home/qqbot/gocqhttp
#下载包,也可以本地上传 #如果慢可以试下,还是本地挂代理下载比较快 #sudo wget https://hub.fastgit.org/Mrs4s/go-cqhttp/releases/download/v0.9.31/go-cqhttp-v0.9.31-linux-amd64 sudo wget https://github.com/Mrs4s/go-cqhttp/releases/download/v0.9.31/go-cqhttp-v0.9.31-linux-amd64
#第一次试运行 sudo chmod 755 ./go-cqhttp-v0.9.31-linux-amd64 sudo ./go-cqhttp-v0.9.31-linux-amd64
#运行后提示[INFO]: 默认配置文件已生成, 请编辑 config.json 后重启程序. #这时候ls查看当前目录下会发现多了许多文件,我们需要配置config.json
|
config.json文件里需要配置QQ账号和密码,反向ws的路径尤其是端口号。go-cqhttp支持三种协议,可以根据需求开启。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| { "uin": 你的QQ账号, "password": "你的QQ密码", "encrypt_password": false, "password_encrypted": "", "enable_db": true, "access_token": "#建议设置token提高安全性", "relogin": { "enabled": true, "relogin_delay": 3, "max_relogin_times": 0 }, "_rate_limit": { "enabled": false, "frequency": 1, "bucket_size": 1 }, "ignore_invalid_cqcode": false, "force_fragmented": false, "heartbeat_interval": 0, #http协议配置 "http_config": { #不用就关了吧,防止端口占用冲突 "enabled": false, "host": "0.0.0.0", "port": 5700, "timeout": 0, "post_urls": {} }, #正向ws配置 "ws_config": { #不用就关了吧,防止端口占用冲突 "enabled": false, "host": "0.0.0.0", "port": 6700 }, #反向ws配置 "ws_reverse_servers": [ { #默认关闭,要打开 "enabled": true, #设置url,8080端口和'/ws/'这个部分路径与HoshinoBot的配置相关联,设置了url下面的就不用管了 "reverse_url": "ws://127.0.0.1:8080/ws/", "reverse_api_url": "ws://you_websocket_api.server", "reverse_event_url": "ws://you_websocket_event.server", "reverse_reconnect_interval": 3000 } ], "post_message_format": "string", "use_sso_address": false, "debug": false, "log_level": "", "web_ui": { "enabled": true, "host": "127.0.0.1", "web_ui_port": 9999, "web_input": false } }
|
配置完成后就可以尝试第二次运行go-cqhttp。
请一定留意以上两条:
- 最好使用新账号
- 登录帐号成功后至少一个星期内请不要在手机或者其他设备登录QQ,否则会引起异地登录导致封号
1 2 3 4 5 6 7 8
| #再次运行 sudo ./go-cqhttp-v0.9.31-linux-amd64 #最后进入go-cqhttp的控制台就是成功了 #可以尝试给机器人qq发消息,理论上go-cqhttp的控制台会显示出来
#挂起这一个screen ctrl + a + d #再次进入这个screen可以screen -r gocqhttp
|
到这里go-cqhttp就安装完成了。比较可能出现的问题是运行go-cqhttp-v0.9.31-linux-amd64
失败,请确保给足权限。还有就是启动失败,结合控制台的信息查看是不是端口占用了,再去解决。
1.1 安装mirai
此点作为补充,个人是建议使用mirai而不是go-cqhttp,如果需要考虑发送消息的安全性,则可直接跳过本点,直接安装HoshinoBot
mirai的下载和启动方法十分复杂,直接使用方便快捷的启动器MCL(mirai-console-loader)
进入服务器终端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #新建screen screen -S mirai
#新建目录 sudo mkdir /home/qqbot/mirai cd /home/qqbot/mirai
#从Release中下载最新版的zip:https://github.com/iTXTech/mirai-console-loader/releases,这里我选择v1.0.3 #url为https://github.com/iTXTech/mirai-console-loader/releases/download/v1.0.3/mcl-1.0.3.zip sudo wget https://github.com/iTXTech/mirai-console-loader/releases/download/v1.0.3/mcl-1.0.3.zip #解压到当前目录 sudo unzip -o -d ./ ./mcl-1.0.3.zip
#第一次运行mcl sudo java -jar mcl.jar #此时会自动下载控制台和核心的jar,下载成功会提示'mirai-console started successfully'并进入交互控制台
#输入exit退出控制台 > exit
#ls查看当前目录确保有plugins,config等文件夹
#然后下载配置NoneBot插件 #从Release中下载最新版的mirai-jar:https://github.com/yyuueexxiinngg/onebot-kotlin/releases #这里我选择onebot-mirai-0.3.3-all.jar #url为https://github.com/yyuueexxiinngg/onebot-kotlin/releases/download/0.3.3/onebot-mirai-0.3.3-all.jar cd /home/qqbot/mirai/plugins sudo wget https://github.com/yyuueexxiinngg/onebot-kotlin/releases/download/0.3.3/onebot-mirai-0.3.3-all.jar
cd .. #再次运行mcl sudo java -jar mcl.jar #最后提示'1 plugin(s) enabled'即成功加载插件
#输入exit退出控制台,一定要先退出才能编辑配置,否则修改配置无效 > exit
|
然后我们需要编辑配置文件,进入/home/qqbot/mcl/config/OneBot
,修改settings.yml
,主要修改ws_reverse部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| proxy: '' bots: 12345654321: cacheImage: false cacheRecord: false heartbeat: enable: false interval: 1500 http: enable: false host: 0.0.0.0 port: 5700 accessToken: '' postUrl: '' postMessageFormat: string secret: '' timeout: 0 ws_reverse: - enable: true postMessageFormat: string reverseHost: 127.0.0.1 reversePort: 8080 accessToken: '' reversePath: /ws reverseApiPath: /api reverseEventPath: /event useUniversal: true useTLS: false reconnectInterval: 3000 ws: enable: false postMessageFormat: string wsHost: 0.0.0.0 wsPort: 6700 accessToken: ''
|
然后修改自动登录的信息,进入/home/qqbot/mcl/config/Console
,修改AutoLogin.yml
1 2 3 4 5 6 7 8 9 10 11 12 13
| accounts: - account: 123456 password: kind: PLAIN value: pwd configuration: protocol: ANDROID_PAD
|
然后再次运行 mcl:
1 2 3 4 5 6
| cd /home/qqbot/mirai #第三次启动mcl sudo java -jar mcl.jar #最后提示'Login successful'表示登录成功
#最后ctrl + a + d 挂起screen
|
当然挂起screen前你可以输入exit
退出mcl控制台,回到配置AutoLogin.yml
的一步,修改configuration
的protocol
为ANDROID_PHONE
,以便接收类似戳一戳等只有在手机端才能接收的消息类型,然后再启动mcl。
至此,mirai安装完成。
2. 安装HoshinoBot
HoshinoBot的安装非常简单,最难受的估计就是python的环境和模块下载了。
怎么安装python3.8和配置环境变量不多说了,虽然很烦,但是教程挺多的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #新建另一个screen screen -S hoshino
#下载 cd /home/qqbot git clone https://github.com/Ice-Cirno/HoshinoBot.git cd HoshinoBot
#安装依赖 #注意用sudo pip安装的话也要用sudo python运行,不然会找不到包 sudo pip3 install -r requirements.txt
cd hoshino #重命名下文件夹 mv config_example config
|
我们观察下hoshino文件夹下的文件:
1 2 3 4 5 6 7 8 9 10 11 12 13
| config #配置文件夹 modules #模组存放文件夹
#以下消息操作的函和基本操作的封装 util aiorequests.py __init__.py log.py msghandler.py priv.py R.py service.py trigger.py typing.py
|
然后我们要配置HoshinoBot,需要修改hsohino目录下的__bot__.py
,原来的备注就说明得很清楚了,我们主要是修改端口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| """这是一份实例配置文件
将其修改为你需要的配置,并将文件夹config_example重命名为config """
PORT = 8080 HOST = '127.0.0.1'
DEBUG = False
SUPERUSERS = [10000] NICKNAME = ''
COMMAND_START = {''} COMMAND_SEP = set()
RES_PROTOCOL = 'file'
RES_DIR = r'./res/'
RES_URL = 'http://127.0.0.1:5000/static/'
MODULES_ON = { 'botmanage', 'dice', 'groupmaster', 'pcrclanbattle', 'priconne', }
|
1 2 3 4 5 6
| cd /home/qqbot/HoshinoBot sudo python3 ./run.py #运行成功即可进入HoshinoBot得控制台 #为了验证可以对机器人发送消息'在?',如果有回复则成功
ctrl + a + d #挂起screen
|
具体的使用手册请查看https://github.com/Ice-Cirno/HoshinoBot
如果加了群之后机器人对该群的消息不回应,可以尝试重启go-cqhttp和HoshinoBot。
四. 安装插件
机器人的选择其实很多,可以去https://www.pcrbot.com/看看,但是个人觉得功能目前最强大还是HoshinoBot,因为有大量的插件可以使用,甚至yobot也能成为他的一个挂件。下面讲下怎么安装插件。
github项目:https://github.com/pcrbot
很多插件都可以在上面找到,HoshinoBot刚下载下来的时候也有很多插件。
HoshinoBot安装插件的方式大同小异,基本上是把插件拉进/hoshino/modules文件夹,然后在上面说过的__bot__.py
的MODULES_ON选项添加模组的名字。部分插件安装方式可能有差别,具体看插件的README.md。
pcr模拟抽卡
HoshinoBot本身就带有pcr的抽卡,但是很抱歉的是没有包含各种静态资源(比如角色头像和卡池json),导致各种bug。为此,开发者编写了新的抽卡插件,不妨按照教程安装一波:https://github.com/pcrbot/gacha
1 2 3 4 5 6 7 8 9
| cd /home/qqbot/HoshinoBot/hoshino/modules/priconne #清除原来的目录 sudo rm gacha/ -rf git clone https://github.com/pcrbot/gacha.git cd gacha #移动文件 sudo mv _pcr_data.py ../_pcr_data.py sudo mv CHARA_NAME.json ../CHARA_NAME.json sudo mv CHARA_PROFILE.json ../CHARA_PROFILE.json
|
使用更新卡池
可以更新卡池,但是还抽不了卡,虽然新的角色头像在查询文件缺失的时候会自动下载,但网络真的不稳定…而且它只下载头像…各种静态资源还是需要预先下载。
我们之前在__bot__.py
里我们设置了
表示静态资源存储在/home/qqbot/HoshinoBot/res/
下,我们需要把静态资源扔到里面。所以静态资源哪里找?加开发者的群1044540742就能找到,为了偷懒就扔个链接:(我真的不想要百度云,但是暂时还没找到好的方式)
1 2
| 链接:https://pan.baidu.com/s/1HQsCuOw3IsdKD-6uHJXRuA 提取码:jpij
|
下载完解压得到的img文件夹扔到/home/qqbot/HoshinoBot/res/
下即可
12.3 更新* 贴一波官方的下载地址
1 2
| https://download.yobot.win/hoshinobot/res.tar.gz
|
然后重启HoshinoBot,再重启go-cqhttp,安装完成!
原神抽卡/娱乐
极其简单的安装方式,因为静态文件都已经集成在插件了,不用额外下载到res里。
项目地址:https://github.com/pcrbot/Genshin_Impact_bot
1 2 3 4 5
| cd /home/qqbot/HoshinoBot/hoshino/modules/ git clone https://github.com/pcrbot/Genshin_Impact_bot.git #如果下载速度是真滴慢,可以在本地下载完了再上传,但是要注意里面用了中文文件名,要注意文件名乱码问题 #乱码了用convmv改码 #convmv -f GBK -t UTF-8 --notest -r dict
|
然后修改__bot__.py
文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| MODULES_ON = { 'botmanage', 'dice', 'groupmaster', 'pcrclanbattle', 'priconne', 'Genshin_Impact_bot' }
|
理论上按照插件的教程做就好了,插件名字也会提示你怎么写,一般插件名字和插件文件夹名字相同(实际上插件名字是另外定义的)。
最后重启HoshinoBot(如果发现消息发不出去且go-cqhttp提示风控,那还要把go-cqhttp在HoshinoBot重启后重启一次)。
具体的玩法和指令看项目的README.md
先写到这,改天有空了再继续写怎么自定义插件和写插件
无聊的可以去摸一波官方的开发者文档:https://github.com/pcrbot/hoshinobot-development-documentation
12.3 更新:
HoshinoBot的开发团队更新了安装教程 ,写得比我的要详细和全面得多,特别是有把yobot当作HoshinoBot插件使用的部分。
那天开发者的qq群解散了,想找原因才就去上官网,结果发现了这份教程。,刚好是写完这篇东西不久。解散和发教程的原因,emmm,一言难尽,总之这种行为也太打击开发者的热情了。