Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 代码发布 › 「代码发布」使用Python制作IOTQQ管理插件

「代码发布」使用Python制作IOTQQ管理插件

Eswlnk的头像
Eswlnk
2022-08-22 14:21:31
「代码发布」使用Python制作IOTQQ管理插件-Eswlnk Blog
智能摘要 AI
IOTQQ项目是一个基于WebSocket协议的物联网QQ平台,支持多种编程语言开发插件。本文重点介绍了使用Python开发插件的过程。首先,需配置Python环境并安装`python-socketio`和`websocket-client`库。接着,通过连接WebSocket接口监听QQ群消息、好友消息及相关事件,并提供相应的消息处理类库。文中还展示了如何编写代码实现消息接收与响应,包括处理群组消息、好友消息及特定事件。最后,提供了两个示例代码供参考,帮助开发者快速上手。

IOTQQ项目

Github项目

IOTQQ支持WebSocket 所以我们可以通过任意支持WebSocket的编程语言来开发插件,后面我们用Python来演示开发插件的过程

「代码发布」使用Python制作IOTQQ管理插件-Eswlnk Blog
使用Python制作IOTQQ管理插件

环境配置

  1. Python环境搭建 (略)
  2. 安装Socket.io
pippip install python-socketio
pip install websocket-client

Tips: 务必安装websocket-client,否则无法使用!

开始编写插件

连接WebSocket接口

#coding=utf-8
import socketio
@sio.event
def connect():
print('成功连接服务器')
sio.emit('GetWebConn',123456)#取得当前已经登录的QQ链接
def main():
try:
    sio.connect("http://127.0.0.1:8888",transports=['websocket'])
    sio.wait() #阻塞进程
except BaseException as e:
    print (e)
if __name__ == '__main__':
main()

编写相关事件

#coding=utf-8
import socketio
@sio.event
def connect():
print('成功连接服务器')
sio.emit('GetWebConn',123456)#取得当前已经登录的QQ链接
@sio.on('OnGroupMsgs')
def OnGroupMsgs(message):
''' 监听群组消息'''
print(message)
@sio.on('OnFriendMsgs')
def OnFriendMsgs(message):
''' 监听好友消息 '''
print(message)
@sio.on('OnEvents')
def OnEvents(message):
''' 监听相关事件'''
print(message)
def main():
try:
    sio.connect("http://127.0.0.1:8888",transports=['websocket'])
    sio.wait() #阻塞进程
except BaseException as e:
    print (e)
if __name__ == '__main__':
main() 

使用类库来信息处理

#coding=utf-8
import socketio
class GMess:
#QQ群消息类型
def __init__(self,message1):
    #print(message1)
    self.FromQQG = message1['FromGroupId'] #来源QQ群
    self.QQGName = message1['FromGroupName'] #来源QQ群昵称
    self.FromQQ = message1['FromUserId'] #来源QQ
    self.FromQQName = message1['FromNickName'] #来源QQ名称
    self.Content = message1['Content'] #消息内容
class Mess:
#私聊消息类型
def __init__(self,message1):
    self.FromQQ = message1['ToUin']
    self.ToQQ = message1['FromUin']
    self.Content = message1['Content']
@sio.event
def connect():
print('成功连接服务器')
sio.emit('GetWebConn',123456)#取得当前已经登录的QQ链接
@sio.on('OnGroupMsgs')
def OnGroupMsgs(message):
''' 监听群组消息'''
print(message)
@sio.on('OnFriendMsgs')
def OnFriendMsgs(message):
''' 监听好友消息 '''
print(message)
@sio.on('OnEvents')
def OnEvents(message):
''' 监听相关事件'''
print(message)
def main():
try:
    sio.connect("http://127.0.0.1:8888",transports=['websocket'])
    sio.wait() #阻塞进程
except BaseException as e:
    print (e)
if __name__ == '__main__':
main()

然后你就可以开发你自己想要的功能了
下面贴上我写的开发例程:

#coding=utf-8
import socketio
import json
import requests
import pdb
import re
import logging
import time
import socket
'''
Python插件SDK Ver 0.0.2
维护者:enjoy(2435932516)
有问题联系我。
'''
robotqq = "123" #机器人QQ号
webapi = "http://127.0.0.1:8888" #Webapi接口 http://127.0.0.1:8888
sio = socketio.Client()
#log文件处理
logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',level=0,filename='new.log',filemode='a')
class GMess:
#QQ群消息类型
def __init__(self,message1):
    #print(message1)
    self.FromQQG = message1['FromGroupId'] #来源QQ群
    self.QQGName = message1['FromGroupName'] #来源QQ群昵称
    self.FromQQ = message1['FromUserId'] #来源QQ
    self.FromQQName = message1['FromNickName'] #来源QQ名称
    self.Content = message1['Content'] #消息内容
def send(ToQQ,Content,sendToType,atuser=0,sendMsgType='TextMsg',groupid=0):
tmp={}
tmp['sendToType'] = sendToType
tmp['toUser']= ToQQ
tmp['sendMsgType']=sendMsgType
tmp['content']=Content
tmp['groupid']=0
tmp['atUser']=atuser
tmp1 = json.dumps(tmp)
requests.post(webapi+'/v1/LuaApiCaller?funcname=SendMsg&qq='+robotqq,data=tmp1)
def zan(QQ)
#QQ名片赞
tmp={}
tmp['UserID']=QQ
tmp1 = json.dumps(tmp)
requests.post(webapi+'/v1/LuaApiCaller?funcname=QQZan&timeout=10&qq='+robotqq,data=tmp1)
def sendPic(ToQQ,Content,sendToType,imageUrl):
#发送图片信息
tmp={}
tmp['sendToType'] = sendToType
tmp['toUser']= ToQQ
tmp['sendMsgType']="PicMsg"
tmp['content']=Content
tmp['picBase64Buf']=''
tmp['fileMd5']=''
tmp['picUrl']=imageUrl
tmp1 = json.dumps(tmp)
#print(tmp1)
print(requests.post(webapi+'/v1/LuaApiCaller?funcname=SendMsg&timeout=10&qq='+robotqq,data=tmp1).text)
class Mess:
def __init__(self,message1):
    self.FromQQ = message1['ToUin']
    self.ToQQ = message1['FromUin']
    self.Content = message1['Content']
# standard Python
# SocketIO Client
#sio = socketio.AsyncClient(logger=True, engineio_logger=True)
# ----------------------------------------------------- 
# Socketio
# ----------------------------------------------------- 
def beat():
while(1):
    sio.emit('GetWebConn',robotqq)
    time.sleep(60)
@sio.event
def connect():
print('connected to server')
sio.emit('GetWebConn',robotqq)#取得当前已经登录的QQ链接
beat() #心跳包,保持对服务器的连接
@sio.on('OnGroupMsgs')
def OnGroupMsgs(message):
''' 监听群组消息'''
tmp1 = message
tmp2 = tmp1['CurrentPacket']
tmp3 = tmp2['Data']
a = GMess(tmp3)
cm = a.Content.split(' ',3) #分割命令
'''
a.FrQQ 消息来源
a.QQGName 来源QQ群昵称
a.FromQQG 来源QQ群
a.FromNickName 来源QQ昵称
a.Content 消息内容
'''
if a.Content=='#菜单':
    #print(a.ToQQ)
    send(a.FromQQG,"功能",2,a.FromQQ)
    return
te = re.search(r'\#(.*)',str(a.Content))
if te == None:
    return
temp = eval(requests.get("https://hlqsc.cn/lexicon/?id="+str(a.FromQQ)+"&msg="+te.group(1)+"&name=tuling").text)
sendtext = re.sub(r"http.*", "", temp['text'], count=0, flags=0)
send(a.FromQQG,sendtext,2,a.FromQQ)
'''
图灵接口 已丢弃
如果你有图灵api可以直接使用
data_temp = {}
chat_temp = {}
user = {}
user['apiKey'] = '587f10e38dac47bd9abbaa7cfcf3dc64'
user['userId'] = str(a.FromQQ)
te = re.search(r'\#(.*)',str(a.Content))
if te == None:
    return
chat_temp['inputText'] = {'text':te.group(1)}
data_temp['perception'] = chat_temp
data_temp['userInfo'] = user
json_temp = json.dumps(data_temp)
print(json_temp)
temp =eval(requests.post('http://openapi.tuling123.com/openapi/api/v2',data=json_temp).text)
temp1 = temp['results']
text = ''
for i in temp1:
    if i['resultType'] == 'text':
        text+= i['values']['text']
send(a.FromQQG,text,2,a.FromQQ)
'''
logging.info("["+str(a.FromQQG)+']'+str(a.FromQQ)+": "+str(a.Content))
#print(message)
@sio.on('OnFriendMsgs')
def OnFriendMsgs(message):
''' 监听好友消息 '''
tmp1 = message
tmp2 = tmp1['CurrentPacket']
tmp3 = tmp2['Data']
a = Mess(tmp3)
#print(tmp3)
cm = a.Content.split(' ')
if a.Content=='#菜单':
    send(a.ToQQ,"你好",1)
@sio.on('OnEvents')
def OnEvents(message):
''' 监听相关事件'''
print(message)   
# ----------------------------------------------------- 
def main():
try:
    sio.connect(webapi,transports=['websocket'])
    #pdb.set_trace() 这是断点
    sio.wait()
except BaseException as e:
    logging.info(e)
    print (e)
if __name__ == '__main__':
main()
Demo1 Demo2
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
pythonqqqq机器人指令代码管理
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「代码发布」基于时间戳的日志回放引擎
上一篇
「代码发布」QQ群与Minecraft服务器互联 (IOTQQ插件)
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 小工具开发之EdgeOne免费计划兑换工具
  • 研究日志:ERA5-Land数据解析问题
  • 开发日志:解决Windows平台无法使用Metview解析数据的难题
  • 「攻防对抗」从上传漏洞到Getshell | 一次完整的渗透过程
  • 「日志记录」逆向必应翻译网页版API实现免费调用
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

如何在Rocky Linux 8上安装WordPress
2021-09-02 21:53:16
绕过Hook通过内核 API 免杀
2023-07-29 17:55:29
如何将震源球绘制在谷歌地球上
2022-06-17 17:04:00

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 1.079 秒   |  SQL查询 43 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈