• 项目
  • 博客
  • 动态
  • 话题
  • 问答
  • 资讯

Django与go-cphttp搭建QQ机器人

python

云顶笔记

六期-AI-程柯雷·2022-4-23 21:16:09

2
266

点击前往CSDN,记得点赞哦~

浅尝:Djangogo-cqhttp搭建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重发指令)
在这里插入图片描述

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

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

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

配置过滤器

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

# 在urls.py
urlpatterns = [
    path('', views.test),
]

# 在views.py
# 下面这个装饰器是免除Django csrf_token验证的一种手段
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def test(request):
    print(json.loads(request.body))
    return HttpResponse('ok')

举个例子:
当你收到消息时,Django打印出的消息体是:
在这里插入图片描述
然后对比官方的说明,过滤对应的属性即可。比如只上报昵称为emm的人的信息:

{ "sender.nickname": "emm" }

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

发送消息

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

import requests as rq
data = {"user_id": QQ号, "message": "阿弥陀佛善哉善哉!"}
interface = "/send_private_msg"
# get/post请求都可以哦,由于参数长度原因,推荐post
rq.post("http://127.0.0.1:5700"+interface, data=data)
# 因为5700是go-cphttp默认监听的端口,当然可以在配置文件中设置

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

2

  

评论

全部评论 0

最新

暂无评论

关注

关注

粉丝

相关博客推荐