搭建QQ机器人DDBOT

最近在水群的时候看到一个机器人,可以推送直播、动态通知,还有一些自定义命令。感觉挺好玩的,正好云服务器闲着也是闲着(目前只跑了网站和code-server,没什么压力),索性搭个机器人玩玩。

下载与安装

DDBOT的github页面:Sora233/DDBOT: 一个基于MiraiGO的QQ群推送框架。这个机器人是拆包即用的,所以完全不懂代码也没事,releases如下图,下载与机器对应的最新版本即可,比如在windows上就下载DDBOT-v1.0.9.2-windows-amd64.zip,我是搭在阿里云的CentOS上,所以下载DDBOT-v1.0.9.2-linux-amd64.tar.gz,可以在本地下载然后拖到云服务器上去(需要vscode页面),也可以直接wget,不过由于github的屏蔽问题,为了加快下载速度,最好找一个镜像站,网上一搜就有。

image-20230115222729061

下载完后得到一个.tar.gz文件,这是一个压缩包,通过tar -zxvf 文件解压,得到一个可执行文件DDBOT,将它放到一个单独的文件夹中,运行即可。

首次运行结果如下图:image-20230115223723274

进行扫码登录。不过如果是在云服务器上,扫码可能失败,因为不在同一网络下。这时应当先在本地运行,再将生成的文件(也就是登录凭证)传到云服务器上。

配置

配置方面参考官方文档DDBOT/INSTALL.md (github.com),注意如果要订阅直播和动态,一定要配置B站的cookie(登录凭证),最好是用小号,减小盗号和封控风险。之后就可以使用文档里的各个命令了,主要用的就是watch(订阅),roll(用来玩),签到(没什么作用),色图(返回一张非R18色图)。

自定义命令

官方提供的命令比较少,不过提供了模板让我们自定义命令,这就大大提高了可玩性。模板参照DDBOT/TEMPLATE.md (github.com)

下面列举几个我使用的命令

占卜

从塔罗牌(带注释)中随机抽取一张并返回。模板代码:

1
2
{{- reply .msg -}}
{{ pic "/root/ddbot/塔罗牌" }}

效果如图:

image-20230115230341098

原神

回复OP 丨并从库中抽取一张原神相关图片。

代码如下:

1
2
3
{{- reply .msg -}}
OP丨
{{ pic "https://tu.ecy.ink/%E4%BA%8C%E6%AC%A1%E5%85%83/yuanshenC/%E5%8E%9F%E4%B8%80-%E6%9B%A6%E6%B2%B3API.php" }}

效果如图:

image-20230115230621542

find 图片

查找指定tag的图片。这是通过调用API实现的。在模板中发送httpGET请求并得到json,然后根据文档中的处理方法进行解析,最后返回给客户端。不过发图太多容易被腾讯风控吞图。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{{ reply .msg }}
{{- if empty .args -}}
请输入关键词哦,没关系,送给你一张随机色图
{{- $j := httpGet "https://api.lolicon.app/setu/v2" | toGJson -}}
{{- pic ($j.Get "data.0.urls.original").String -}}
{{- else -}}
{{- $tag := index .args 0 -}}
{{- $j := httpGet "https://api.lolicon.app/setu/v2/" (dict "tag" $tag) | toGJson -}}
{{- $url := ($j.Get "data.0.urls.original").String -}}
{{- if empty $url -}}
没有找到该关键词哦,奉上随机色图一张
{{- $j := httpGet "https://api.lolicon.app/setu/v2" | toGJson -}}
{{- pic ($j.Get "data.0.urls.original").String -}}
{{- else -}}
找到一张相关色图,注意身体哦
{{ pic $url}}
{{- end -}}
{{- end -}}

效果如图:

image-20230116001158523

chat

可以给机器人加上聊天功能,其实和find差不多,同样是调API。API的选择有很多,最好是chatGPT的接口,但是太不稳定而且没有官方版本。网上免费的接口的使用体验就要差很多了,这里我选择的是青云客的API,没有什么使用门槛,当然也比较low。

代码如下:

1
2
3
4
5
6
7
8
9
{{ reply .msg }}
{{- if empty .args -}}
你想说什么捏
{{- else -}}
{{- $content := index .args 0 -}}
{{- $j := httpGet "http://api.qingyunke.com/api.php/" (dict "key" "free" "msg" $content) | toGJson -}}
{{- $reply := ($j.Get "content").String -}}
{{- $reply -}}
{{- end -}}

效果如图:

image-20230208214518926

没什么实际用处,就是玩玩。

其他

接着就可以根据关键词自己添加命令了。我设置了大概二十个命令吧,在使用过程中根据需求逐渐添加就好了,如果有问题就去模板看看。最后,最好根据命令重写help,告诉大家BOT都能干什么。

搭建chatGPT对话QQ机器人

最近chatGPT很火,不过有一定注册门槛,不是人人都能用得上的,如果把它接入QQ机器人,就可以让大伙都玩一玩了。
很可惜,chatgpt没有提供官方API,之前的一些非官方API也陆续被禁掉了,所以不太可行。
幸运的是,gpt3提供了官方API,而且每个账号有18$的免费额度,实际使用下来用得非常快,在大群里基本上一天就能用完,所以也就尝尝鲜了。
具体方法可以参照这个视频3分钟接入GPT3-QQ机器人