浅尝:Django与go-cphttp搭建QQ机器人

所谓QQ机器人就是对QQ事件产生响应。如戳一戳、加好友申请,文字甚至语音消息等等事件,当你机器人收到这些事件时在服务端产生操作,如回复、发邮件、新建文件夹等等。炉火纯青者可以试试用QQ机器人来配置服务器等等。

首先我们先来认识一下工具:

go-cqhttp:一个通过简单配置就能获取你QQ事件的工具,它可以监听你QQ几乎所有事件,然后将事件信息反馈给你的服务器。
Django:一个Python的web框架,我们主要利用它来接收go-cqhttp发来的信息来进行操作。

下载配置go-cphttp:

我们先在人家的仓库查找对应版本的程序并下载,如 win10且为amd架构的下载 go-cqhttp_windows_amd64.exe,下载后在CMD里面cd进入文件目录,将程序在CMD中执行,由于咱们使用Django作为接收端,所以在初始化生成配置文件 config.yml时我们选择 0. http
然后在配置文件中进行相关配置,配置的大框架看这里

需要注意:

一般情况只配置开头的QQ号和末尾的HTTP post即可,QQ号是监听哪个QQ,post是go-cphttp将信息反馈到哪里,当你收到请求时处理复杂、费时的操作时推荐将重连延迟和间隔设置大一点,否则go-cphttp会以为你的服务器没有收到请求而一直重发。

(go-cqhttp在收到服务器的响应时,状态码不是500时就算发送请求成功,所以一般情况 return HttpResponse('ok')就够用,但是当你在收到请求时做一些比如下载大视频等等操作时,Django来不及返回响应,导致go-cqhttp重发指令)

浅尝:Django与go-cphttp搭建QQ机器人

config.yml中末尾的HTTP post配置中只将 -url 写了即可(地址填自己的服务器地址,平时在本机跑的话就Django默认的- url: http://127.0.0.1:8000/就行)

浅尝:Django与go-cphttp搭建QQ机器人

默认情况下,go-cqhttp在遇到事件或心跳时都会反馈信息给服务器,这个时候就需要配置过滤器,将不需要的信息过滤掉,过滤配置还是在 config.yml中操作。

我们在同目录下创建一个名称随意的json文件,我的是 filter.json,里面写一些配置信息,别忘记在 config.yml配置你的json目录哦~

浅尝:Django与go-cphttp搭建QQ机器人

官方的教程或许看的你一头雾水,但是当你Django接收事件后,打印出请求体后一切就明白了,,,


urlpatterns = [
    path('', views.test),
]

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def test(request):
    print(json.loads(request.body))
    return HttpResponse('ok')

举个例子:
当你收到消息时,Django打印出的消息体是:

浅尝:Django与go-cphttp搭建QQ机器人
然后对比官方的说明,过滤对应的属性即可。比如只上报昵称为emm的人的信息:
{
    "sender.nickname": "emm"
}

就跟爬虫一样,关键字是观察格式

发送消息

当Django接受到消息,你便可以采取得到该消息后的各种操作了:
比如:回复消息:
官方的接口文档里面有详细的接口介绍,比如发消息就向 /send_private_msg这个接口发对应格式的数据:

import requests as rq
data = {"user_id": QQ号, "message": "阿弥陀佛善哉善哉!"}
interface = "/send_private_msg"

rq.post("http://127.0.0.1:5700"+interface, data=data)

另外,如果你将go-cqhttp放入服务器出现登录异常(QQ检测出你的ip地址异常会怀疑你QQ被盗了,所以阻止你登录的情况)时,尝试本地登录后直接将生成的 session.token文件打包到服务器上即可解决

点击查看原文

Original: https://blog.csdn.net/qq_53783873/article/details/124276201
Author: Lfan ke
Title: 浅尝:Django与go-cphttp搭建QQ机器人

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/733105/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球