前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OPQ机器人框架插件开发之Python模板

OPQ机器人框架插件开发之Python模板

作者头像
SingYi
发布2022-07-14 14:22:17
8550
发布2022-07-14 14:22:17
举报
文章被收录于专栏:Lan小站Lan小站

今天了解到还有个OPQ的框架似乎还不错,于是研究了一下,比酷Q还方便(因为我之前用的air版,图片都发不了)

并且支持多平台,但是最新的版本居然阉割了Windows下的许多功能

image.png
image.png

不过问题不大,满足我之前的需求了。

于是参考了一下原本iot的python模板然后进行了修改,更加符合自己的用法习惯吧。

image.png
image.png

然后就是代码:

botConfig->configInfo.py(用于存放接口地址,以及机器人QQ)

代码语言:javascript
复制
robotQQ = "{机器人QQ}"
webapi = "{接口地址,后面无需加/}"

botConfig ->botClass.py (用于存放一些对消息的解析类)

代码语言:javascript
复制
import json

import requests
from .configInfo import *

"""
By : Lan
Website : 
""" 

# 群组消息接受类
class GroupMess:
    def __init__(self, message):
        self.FromQQG = message['FromGroupId']  # 来源QQ群
        self.QQGName = message['FromGroupName']  # 来源QQ群昵称
        self.FromQQ = message['FromUserId']  # 来源QQ
        self.FromQQName = message['FromNickName']  # 来源QQ名称
        self.Content = message['Content']  # 消息内容
        self.MsgTime = message['MsgTime']  # 消息时间


# 私发消息接受类
class PrivateMess:
    def __init__(self, message):
        self.FromQQ = message['ToUin']  # 来源QQ号
        self.ToQQ = message['FromUin']  # 目标QQ号
        self.Content = message['Content']  # 消息内容
        self.MsgType = message['MsgType']  # 消息类型


# 发送消息类
class SendMessage:
    def __init__(self, toUser=0, sendToType=0, sendMsgType='', groupId=0, content='', atUser=0, voiceUrl='', picUrl='',
                 picBase64Buf='', voiceBase64Buf=''):
        self.data = {
            "toUser": toUser,  # 欲发给的对象 群或QQ好友或私聊对象
            "sendToType": sendToType,  # 发送消息对象的类型 1好友 2群3私聊
            "sendMsgType": sendMsgType,  # 欲发送消息的类型 TextMsg、PicMsg、VoiceMsg
            "content": content,  # 发送的文本内容
            "groupid": groupId,  # 发送私聊消息是 在此传入群ID 其他情况为0
            "atUser": atUser,  # At用户 传入用户的QQ号 其他情况为0
            "picUrl": picUrl,  # 发送图片的网络地址
            "picBase64Buf": picBase64Buf,  # 发本地送图片的buf 转 bas64 编码
            "voiceUrl": voiceUrl,  # 发送语音的网络地址
            "voiceBase64Buf": voiceBase64Buf,  # 发本地送语音的buf 转 bas64 编码
            "fileMd5": ""
        }

    '''
    发送图片消息需要有:toUser sendToType sendMsgType picUrl
    '''

    def send(self):
        print(self.data)
        requests.post(url=f'{webapi}/v1/LuaApiCaller?qq={robotQQ}&funcname=SendMsg&timeout=10',
                      data=json.dumps(self.data))
        return 200

main.py (用于存放主文件)

代码语言:javascript
复制
# coding=utf-8
import logging
import time
import socketio
from botConfig.botClass import *
from botConfig.configInfo import *

sio = socketio.Client()


"""
By : Lan
Website : https://pan.lanol.cn/
""" 

def beat():
    while True:
        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):
    """ 监听群组消息"""
    data = GroupMess(message['CurrentPacket']['Data'])
    print(data)
    return


@sio.on('OnFriendMsgs')
def OnFriendMsgs(message):
    """ 监听好友消息 """
    data = PrivateMess(message['CurrentPacket']['Data'])
    print(data)
    return


@sio.on('OnEvents')
def OnEvents(message):
    """ 监听相关事件"""
    print(message)


def main():
    try:
        sio.connect(webapi, transports=['websocket'])
        sio.wait()
    except BaseException as e:
        logging.info(e)
        print(e)


if __name__ == '__main__':
    main()

GitHub地址:https://github.com/vastsa/OPQBot-Pyhon

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档