webQQ在今年1月已经停止服务了。想用python写一个QQ机器人,但是python的QQbot库因为webQQ停止服务,挂得不能再彻底了。后来google了好几天,终于在github找到了一个神奇的插件=coolq-http-api。

这个插件的神奇之处在于,它运行一个server,把qq信息转成http形式。发送,接收信息的时候,只需要使用http请求,即可和server进行交互,非常方便,也非常使用python(requests库无敌)。当然,插件运行基于酷Q,需要用酷Q加载插件才能正常使用。

要实现用python发送/接收消息,要用requests发送http请求之外,还要用flask在本地搭建一个flask服务端,告知插件flask服务器的地址和端口,这样所有的qq消息都会自动传递给flask,我们可以根据消息的来源,内容,自动判断是否要回复(用requests向酷Q进行http请求)即可。原理图如下:

一、 准备工作

酷Q下载安装: https://cqp.cc/t/23253 下载任意版本,右键解压即可使用。

python下载安装:这个就不说了,说太多次了,去官网下载安装包,一键安装就行了,注意要使用python3版本。

python IDE下载安装:推荐使用pycharm,具体安装过程略。也是一键安装。

搞定后你的酷Q app文件夹下应该是这样的:

启动酷Q主目录下的CQA.exe,打开酷Q登录你要做机器人的QQ号,建议使用小号,防止被封。

由于酷Q使用的是手机TIM协议,成功上线后, 你可以看到小号为TIM在线。

右键酷Q的小图标,进入应用管理,找到HTTP API直接启用。

成功启用后,会弹出一个控制台窗口,提示正在监听5700端口。

二、 配置酷Q httpApi插件

插件的配置文档: http://richardchien.gitee.io/coolq-http-api/docs/

配置文件在酷Q Air\data\app\io.github.richardchien.coolqhttpapi\config 文件夹下,是一个以QQ名称命名的json文件。

以下几项配置比较关键:

port : 酷Q server监听的端口,可自定义。

use_http:务必是true,除非你使用websocket。

post_url:flask服务端接收消息的接口,可自定义。

post_message_format:酷Q向flask发送消息的格式,建议改成array。

三、用python发送自己的第一条QQ消息

用requests构造一个http post请求,post的数据填入相关信息:

import requests

data = {

'user_id':723690032,

'message':'我是一个可爱的小机器人喵~',

'auto_escape':False

}

api_url = 'http://127.0.0.1:5700/send_private_msg'

#酷Q运行在本地,端口为5700,所以server地址是127.0.0.1:5700

r = requests.post(api_url,data=data)

print(r.text)

四、接收第一条QQ消息

同样先悄咪咪安装一个flask….

from flask import Flask,request

from json import loads

bot_server = Flask(__name__)

@bot_server.route('/api/message',methods=['POST'])

#路径是你在酷Q配置文件里自定义的

def server():

data = request.get_data().decode('utf-8')

data = loads(data)

print(data)

return ''

if __name__ == '__main__':

bot_server.run(port=5701)

#端口也是你在酷Q配置文件里自定义的

运行一下这个flask程序,然后用自己的QQ给你的机器人随便发条信息:

{'font': 65320440, 'message': [{'data': {'text': '你才不是可爱的小机器人呢'}, 'type': 'text'}], 'message_id': 8, 'message_type': 'private', 'post_type': 'message', 'raw_message': '你才不是可爱的小机器人呢', 'self_id': 766202408, 'sender': {'age': 0, 'nickname': 'Misery_', 'sex': 'unknown', 'user_id': 723690032}, 'sub_type': 'friend', 'time': 1573044578, 'user_id': 723690032}

控制台打印的内容是一个python的字典格式,我们可以优化一下,取出需要的信息,如QQ号,昵称,消息内容:

QQ = data.get('user_id')

nickname = data['sender'].get('nickname')

message = data['message'][0]['data'].get('text')

print('来自QQ:{},昵称:{}的信息:\n{}'.format(QQ,nickname,message))

五、后记

到这里,你就写出了一个hello world QQ机器人,想实现更多的功能,需要多去研究研究API,多研究研究python。这个插件功能相当强大,几乎涵盖了所有的QQ功能。博主曾经写过一个,可以对接某面板,涵盖登录,查询,支付等多种功能,并带有群管模块,接入阿里云tts语音系统,实现语音聊天。真的非常强大,有兴趣的同学可以好好研究一下。

python制作qq机器人_使用python打造一个自己的QQ机器人 【基础篇】相关推荐

  1. python制作音乐模块_用Python打造一个只属于你的专属音乐播放器,享受动手的快乐!...

    平常我们总是用爬虫爬取网页上的音乐,今天我们换个玩法,用Python制作一个独一无二只属于你的音乐播放器,小伙伴们觉得如何?如果觉得提议还不错,那就立即动手吧! 一.需要的库 pygame tkint ...

  2. python制作电脑软件_利用PYTHON制作桌面版爬虫软件(二)

    今天继续新的专题.主要讲解[利用PYTHON制作桌面版爬虫软件]下的如何实现界面功能(一).该讲主要包括以下三个内容:掌握如何编写主函数,运行界面. 了解pywin32模块. 如何用python识别Q ...

  3. 如何用python制作三维动画_用Python制作3D动画

    很多小伙伴可能不知道,在3D动画甚至电影制作的过程中,Python也在其中扮演了很重要的角色呢! 比如皮克斯的动画片一般使用Maya软件制作,并且流程中使用到了大量的Maya Python插件. 另外 ...

  4. python制作pdf教程_学以致用:Python爬取廖大Python教程制作pdf!

    学以致用:Python爬取廖大Python教程制作pdf! python-tutorial-pdf 当我学了廖大的Python教程后,感觉总得做点什么,正好自己想随时查阅,于是就开始有了制作PDF这个 ...

  5. python 小说下载工具_使用tkinter打造一个小说下载器,想看什么小说,就下什么...

    前言 今天教大家用户Python GUI编程--tkinter 打造一个小说下载器,想看什么小说,就下载什么小说 先看下效果图 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkint ...

  6. python制作表白神器_用Python个女神做一个表白神器

    用Python给女神表白 情人节刚刚过去,但男同胞们对女神的暗恋愈加热烈,想尽一切办法表白,今天,咱们就用Python制作一个表白神器. 程序介绍 运用pygame制作一个小游戏,当女神用鼠标点击&q ...

  7. python制作阴阳师脚本_利用python制作一个阴阳师小游戏

    利用python制作一个阴阳师小游戏 发布时间:2020-11-27 13:59:49 来源:亿速云 阅读:84 这期内容当中小编将会给大家带来有关利用python制作一个阴阳师小游戏,文章内容丰富且 ...

  8. python制作手机壁纸_用Python生成自己独一无二的手机壁纸

    已经12月份了,马上就要过年了,要不要换一个喜气洋洋.洋洋洒洒.洒扫应对.对牛弹琴的手机壁纸呢? 今天小编给大家表演的节目是:用Python生成自己独一无二的手机壁纸. 首先我们需要选择一个现成的手机 ...

  9. python制作手机壁纸_用Python生成自己专属的手机春节壁纸

    ↑ 关注 + 置顶 ~ 有趣的不像个技术号 马上就要过年了,要不要换一个喜气洋洋.洋洋洒洒.洒扫应对.对牛弹琴的手机壁纸呢? 今天小五给大家表演的节目是:用Python生成自己独一无二的手机壁纸. 首 ...

  10. python制作电脑软件_利用PYTHON制作桌面版爬虫软件(一)

    抱歉,对长沙房地产数据的挖掘与分析[三],想了蛮久,觉得对自己的分析结果不是很理想.等我完善好了,我再发出来吧.今天继续开启新的一专题.主要讲解如何用PYTHON实现简单的桌面软件的制作. 题外话,我 ...

最新文章

  1. shell任务不受意外中断影响的常见方法
  2. Mysql5.6-DDL是否加锁
  3. iOS UITest之加载其他应用
  4. mac os 命令行下载
  5. Java动态绑定机制的内幕
  6. qpython执行手机脚本精灵使用教程_Android上执行python脚本-QPython
  7. python做饼图出现重影_Matplotlib 绘制饼图解决文字重叠的方法
  8. 【No.4 Ionic】修改 cordova 插件
  9. 【Python】随机种子 random/numpy/pytorch/pytorch.cuda
  10. DS18B20引脚 实物引脚 (千万不要接反啊)
  11. Zabbix Server 5.2安装教程
  12. Python深度学习(3):波士顿房价预测
  13. python运行后闪退_怎样让python运行完了不直接退出?
  14. 人文讲座之《阳明心学与今日中国》
  15. USB转RS485代替PC/PPI通讯电缆
  16. krpano 小行星开场和自动旋转
  17. 使用命令将项目打包并使用WinSCP将包部署到服务器
  18. 2022/06/03密码
  19. docker安装过程 和部署2048小游戏
  20. Win11自带屏幕录制怎么打开?Win11自带录屏的使用方法

热门文章

  1. JavaScript(1)使用ducument.write()在页面上显示红色的“开启JavaScript学习之旅”。
  2. Python远程开关机
  3. java操作RabbitMq时出现Caused by: org.springframework.amqp.AmqpException: Cannot determine ReplyTo message
  4. 什么是服务器、ip以及域名以及他们之间的联系
  5. JAVA400行代码实现飞翔的小鸟
  6. 数据结构学习笔记(考研 笔记 完结 西电)
  7. antd checkbox 默认选中_antd的CheckBox
  8. python什么时候需要加引号_Python篇(一) 引号的作用及其区别
  9. 半波耦合器的设计——RSOFT
  10. 1553B为什么要加耦合器?