go-cqhttp已寄 新项目 OneBOT or QQNT
环境要求
本环节的环境要满足教程1,且编程语言为Python,扩展库为flask,requests
本环节的数据都是来源于go-cqhttp对5701端口推送的数据
如果看的很迷糊那就来一起探讨交流吧开发者QQ群聊
三种消息的标志是一个字段的三种状态码
该状态码来源于ggo-cqhttp推送的message_type字段
消息类型 | 对应参数 |
---|---|
私聊 | private |
群聊 | group |
频道 | heartbeat |
私聊的复述
实现代码
import requests
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=["POST"])
def post_data():
print(request.get_json())
if request.get_json().get('message_type') == 'private': # 如果是私聊信息状态码
# 获取需要的消息
QQ_name = request.get_json().get('sender').get('nickname') # 发送者人的昵称叫啥
QQ_id = request.get_json().get('sender').get('user_id') # 发送者的QQ号
Xingxi_text = request.get_json().get('raw_message') # 发的什么东西
# 给go-cqhttp的5700端口提交数据,类似于浏览器访问的形式
requests.get("http://127.0.0.1:5700/send_private_msg?user_id={0}&message={1}".format(QQ_id, Xingxi_text))
return 'OK' # 对go-cqhttp进行相应,不然会出现三次重试
app.run(debug=True, host='127.0.0.1', port=5701) #监听本机的5701端口(数据来源于go-cqhttp推送到5701端口的数据)
代码解析:
http://127.0.0.1:5700/send_private_msg?user_id={0}&message={1}
http://127.0.0.1:5700/send_group_msg?user_id=给那个人发消息&message=发的内容是啥
运行的效果如下
群聊的复述
实现代码
import requests
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=["POST"])
def post_data():
if request.get_json().get('message_type') == 'group': # 如果是群聊信息状态码
# 获取需要的消息
Qun_id = request.get_json().get('group_id') # 那个群发的
QQ_name = request.get_json().get('sender').get('nickname') # 发送者人的昵称叫啥
QQ_id = request.get_json().get('sender').get('user_id') # 发送者的QQ号
Xingxi_text = request.get_json().get('raw_message') # 发的什么东西
# 给go-cqhttp的5700端口提交数据,类似于浏览器访问的形式
requests.get("http://127.0.0.1:5700/send_group_msg?group_id={0}&message={1}".format(Qun_id, Xingxi_text))
return 'OK' # 对go-cqhttp进行相应,不然会出现三次重试
app.run(debug=True, host='127.0.0.1', port=5701) #监听本机的5701端口(数据来源于go-cqhttp推送到5701端口的数据)
代码解析:
http://127.0.0.1:5700/send_group_msg?group_id={0}&message={1}
http://127.0.0.1:5700/send_group_msg?group_id=给那个群发消息&message=发的内容是啥
运行的效果如下
频道的复述
不知道为什么我在测试v1.0.0-rc3版本的时候出现了go-cqhttp无法推送频道的消息,所以暂时先不写等可以正常获取的时候我会再次补充
(v1.0.0-rc2频道的消息获取是正常的)
频道有一点差别,不仅要获取频道的特征,还要获取主频道号码,子频道号码才能正常的发送消息
因为频道的特殊结构,主频道里包含着n个字频道,所以它的代码有一点点的区别
扩展
私聊和群聊的推送数据(可通过request.get_json()命令获取)
私聊
{
"post_type": "message",
"message_type": "private",
"time": 1664328705,
"self_id": 3276394070,
"sub_type": "friend",
"font": 0,
"sender": {
"age": 0,
"nickname": "Starry Sea",
"sex": "unknown",
"user_id": 2491267482
},
"message_id": -859284203,
"user_id": 2491267482,
"target_id": 3276394070,
"message": "私聊测试",
"raw_message": "私聊测试"
}
群聊
{'post_type': 'message',
'message_type': 'group',
'time': 1664328761,
'self_id': 3276394070,
'sub_type': 'normal',
'raw_message': '群聊测试',
'sender': {
'age': 0, 'area': '',
'card': '', 'level': '',
'nickname': 'Starry Sea',
'role': 'owner',
'sex': 'unknown',
'title': '',
'user_id': 2491267482
},
'user_id': 2491267482,
'message_id': 918200246,
'anonymous': None,
'font': 0,
'group_id': 953026557,
'message': '群聊测试',
'message_seq': 2141}