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

 Lan   2020-08-07 11:24   1332 人阅读  11 条评论

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

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

image.png

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

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

image.png

然后就是代码:

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

robotQQ = "{机器人QQ}"
webAPI = "{接口地址,后面无需加/}"

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

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 (用于存放主文件)

# coding=utf-8
import logging
import time
import socketio
from botConfig.botClass import *
from botConfig.configInfo import *

sio = socketio.Client()


"""
By : Lan
Website : https://www.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

本文地址:https://www.lanol.cn/post/364.html
版权声明:本文为原创文章,版权归 Lan 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

 评论列表

  1. 沙盒梦想
    沙盒梦想  @回复

    emmm这个该怎么添加消息处理和消息发送啊

    • Lan
      Lan 2020-08-15 07:03:37  回复

      @沙盒梦想代码里面有监听事件消息。在那里面进行处理。发送消息用类sendmessge(在botclass.py)里面

  2. 沙盒梦想
    沙盒梦想  @回复

    (指监听

  3. 访客
    访客  @回复

    好家伙,作者换了个名就是为了不被百度收录,你倒好,又给整收录了

  4. 访客
    访客  @回复

    接口地址是什么呀

  5. 访客A
    访客A  @回复

    请问OPQ在哪儿安装和下载啊?百度都没搜到啥合适的。麻烦能给个链接吗?

  6. 沙盒梦想
    沙盒梦想  @回复

    出现name 'webapi' is not defined
    怎么办..