luoxis1.0文档

本版本是测试版本,luoxis使你轻松编写QQ机器人

本框架只是包装了一下go-cqhttp的API,方便开发使用,1.0的基础包装版本已经停止更新(已经满足需求)

安装

下载地址:luoxis框架下载 – luoxistar

本版本包括:go-cqhttp所有API的请求封装,flaskHTTP服务器,方便使用存在消息内容的变量,并且夹带go-cqhttp

打开go-cqhttp文件夹的config.yml文件,在正确位置填写QQ账号和密码,然后在此目录下打开CMD,输入命令:

go-cqhttp.exe

未登录的状态是:

d:\Downloads\go-cqhttp_windows_arm64>go-cqhttp.exe
[2023-01-06 16:24:01] [INFO]: 当前版本:v1.0.0-rc4
[2023-01-06 16:24:01] [INFO]: 将使用 device.json 内的设备信息运行Bot.
[2023-01-06 16:24:01] [INFO]: Bot将在5秒后登录并开始信息处理, 按 Ctrl+C 取消.
[2023-01-06 16:24:06] [INFO]: 开始尝试登录并同步消息...
[2023-01-06 16:24:06] [INFO]: 使用协议: iPad

[2023-01-06 16:24:08] [INFO]: Protocol -> connect to server: 120.232.18.213:8080
[2023-01-06 16:24:08] [WARNING]: 登录需要滑条验证码, 请选择验证方式:
[2023-01-06 16:24:08] [WARNING]: 1. 使用浏览器抓取滑条并登录
[2023-01-06 16:24:08] [WARNING]: 2. 使用手机QQ扫码验证 (需要手Q和gocq在同一网络下).
[2023-01-06 16:24:08] [WARNING]: 请输入(1 - 2):
注:这里推荐选择2

已登录:

d:\Downloads\go-cqhttp_windows_arm64>go-cqhttp.exe
[2023-01-06 16:24:32] [INFO]: 当前版本:v1.0.0-rc4
[2023-01-06 16:24:32] [INFO]: 将使用 device.json 内的设备信息运行Bot.
[2023-01-06 16:24:32] [INFO]: Bot将在5秒后登录并开始信息处理, 按 Ctrl+C 取消.
[2023-01-06 16:24:37] [INFO]: 开始尝试登录并同步消息...
[2023-01-06 16:24:37] [INFO]: 使用协议: iPad
[2023-01-06 16:24:37] [INFO]: Protocol -> connect to server: 120.232.18.213:8080
[2023-01-06 16:24:37] [WARNING]: 登录需要滑条验证码, 请选择验证方式:
[2023-01-06 16:24:37] [WARNING]: 1. 使用浏览器抓取滑条并登录
[2023-01-06 16:24:37] [WARNING]: 2. 使用手机QQ扫码验证 (需要手Q和gocq在同一网络下).
[2023-01-06 16:24:37] [WARNING]: 请输入(1 - 2):
2
[2023-01-06 16:26:25] [INFO]: 请使用手机QQ扫描二维码 (qrcode.png) :
[2023-01-06 16:26:45] [INFO]: 扫码成功, 请在手机端确认登录.
[2023-01-06 16:26:55] [INFO]: 登录成功 欢迎使用: 铬夕
[2023-01-06 16:26:55] [INFO]: 开始加载好友列表...
[2023-01-06 16:26:55] [INFO]: 共加载 19 个好友.
[2023-01-06 16:26:55] [INFO]: 开始加载群列表...
[2023-01-06 16:26:55] [INFO]: 共加载 5 个群.
[2023-01-06 16:26:55] [INFO]: 资源初始化完成, 开始处理信息.
[2023-01-06 16:26:55] [INFO]: アトリは、高性能ですから!
[2023-01-06 16:26:55] [INFO]: 正在检查更新.
[2023-01-06 16:26:55] [WARNING]: HTTP 服务器使用了过时的配置格式,请更新配置文件!
[2023-01-06 16:26:55] [INFO]: HTTP POST上报器已启动: http://localhost:5000/
[2023-01-06 16:26:55] [INFO]: CQ HTTP 服务器已启动: [::]:5700
[2023-01-06 16:26:55] [INFO]: 检查更新完成. 当前已运行最新版本.
[2023-01-06 16:26:55] [INFO]: 开始诊断网络情况

hello world

返回到框架根目录

打开main.py,里面的代码是示例代码,可以直接运行,如果运行报错,可以根据报错内容自行安装库

#main.py文件内容
import luoxis
class main(luoxis.luoxis):
    def main(self):
        self.When_the_message_is_this_send_this(so='你好世界!',Send_this='hello world')
if __name__ == '__main__':  
    main = main()
    main.go()

这里需要导入luoxis本体,然后继承luoxis.luoxis,然后重写main函数,每次消息到来都会调用此函数

注意:类的实例化和main.go()函数的调用都必须在if __name__ == ‘__main__’: 这个if下面进行

运行成功示例:

发送:‘你好世界!’机器人返回:’hello world’

这里调用的函数是self.When_the_message_is_this_send_this,翻译过来就是:当消息为…时,发送此消息

他有两个参数:os,Send_this,从直接理解就是当so=…时发送Send_this

配置

目前有两个配置

UseLegacy = False #是否使用旧版的luoxis,同时也将支持旧版的中文变量
EnableChineseVariables = False #启动新版中文变量,当UseLegacy==True时不可使用英文变量,UseLegacy==None时中英混用

类变量

luoxis类内提供很多变量提供调用

self.SourceGroup  #群消息来源
self.MessageContent  #消息内容
self.MessageSender  #消息发送者(QQ号)
self.MessageType  #消息类型(私聊/群组)
self.Source  #消息来源,如果是群则写群号,如果是私聊则写对方QQ号

英文类名可以直接翻译得到中文

中文变量(需要配置EnableChineseVariables =None(推荐)或 EnableChineseVariables = true)

self.消息源群
self.消息内容
self.消息发送人
self.消息类型
self.消息来源

类方法

sendMessage

发送消息,自动判读消息类型

传值:QQID:int 消息内容:str

ReplyMessage

回复消息,可以直接回复,不需要对面的QQ号,最好用于私聊

传值:回复消息内容:str

POCQCodeOne

暂时不推荐用

When_the_message_is_this_send_this

如方法名,当消息为…时,发送此消息

传值:so和Send_this

从直接理解就是当so=…时发送Send_this

When_the_message_has_this_send_this

当消息有…时,发送此消息

传值:so:list和Send_this

任务方法:创建任务 event_listeners_go

这个方法可以使主进程代码与任务代码同时异步运行

示例使用代码:

import luoxis
def task(ListeningValue,data) -> bool:
    # data = [{'Source':self.Source, \
    #         'MessageSender':self.MessageSender, \
    #         'MessageContent':self.MessageContent, \
    #         'MessageType':self.MessageType}]
    data = data[0]
    if(ListeningValue == data['MessageSender']):
        if(data['MessageContent'] == '创建任务'):
            luoxis.sendMessage(data['MessageType'],data['Source'],'请问您要创建什么任务')
        elif(data['MessageContent'] == '发送创建任务成功'):
            luoxis.sendMessage(data['MessageType'],data['Source'],'执行任务成功(发送这条信息就是任务本身)')
            return True #停止任务
class main(luoxis.luoxis):
    EnableChineseVariables = None
    def main(self):
        if(self.MessageContent == '创建任务'):
            self.event_listeners_go(ListeningFunction=task,ListeningValue=self.MessageSender) #创建任务,给任务函数传入消息发送者,确定这个任务是谁创建的
        #self可以调用类方法
if __name__ == '__main__':  
    main = main()
    main.go()

任务需要一个函数来运行,任务开始执行的时候就会调用任务函数,每收到一条消息,luoxis就会执行一次这个函数,当函数返回True时,任务就终止

定义任务函数:

函数格式(除了函数名,其他都不可以改):task(ListeningValue,data) -> bool

示例代码:如上代码

注意:在函数里面不可以使用luoxis类内的所有方法,因为这是异步的

运行任务

这个event_listeners_go方法需要传以下内容:

ListeningFunction : object 任务函数,传入一个函数对象

ListeningValue : 给函数传的值,除了data以外的值

调用示例:self.event_listeners_go(ListeningFunction=task,ListeningValue=self.MessageSender)

data说明

data是定义函数时必须要的,位置不能变更

data里面是一个列表,列表下标为0时有一个字典:

    # data = [{'Source':self.Source, \
    #         'MessageSender':self.MessageSender, \
    #         'MessageContent':self.MessageContent, \
    #         'MessageType':self.MessageType}]

字典里面有Source,MessageSender,MessageContent,MessageType

分别对应:消息来源,消息发送者,消息内容,消息类型

例子:

data[0]['Source'] #获取消息来源

luoxis.sdk

这个是luoxis的核心之一,是go-cqhttpAPI请求的封装库,有大量方法,例子:

luoxis.sdk.发送群消息(<群号>,<要发的内容>,<是否作为纯文本发送>)

luoxis.cq

用于生成CQ码,有两个特殊一点的方法:CqToJson,JsonToCq

从函数名就可以看出,第一个方法用来把CQ码转换成json

第二个用来把Json转换成CQ码

其他非类方法

有一些在luoxis.py里面但是不在luoxis类里面的函数,有一些是弃用的,有一些有用的

sendMessage|发送消息

这两个方法用来发送消息,注意:是两个

sendMessage(消息类型,qid,消息内容) -> bool
发送消息(消息类型,qid,消息内容) -> bool

V方法,获取版本号

不多解释,懂得都懂

v() -> list[<自己的版本号>,<官方最新版本号>]

event_listeners

任务方法背后调用的函数,不推荐用,不多解释

event_listeners(ListeningFunction:object,conn:object,ListeningValue=None) -> None

Mysql操作封装类:luoxis.dbManager

这个类可以使你轻松操作mysql

需要提前在luoxis.py第九行设置数据库信息

dbManager = mysql.MysqlManager(db='mysql_test', user='root', passwd='')
#值以此为数据库名,数据库用户名,数据库密码

增删查改 luoxis.mysql

luoxis.mysql.增(dbManager,表名:str,数据) #插入数据
    '''
     0 代表是插入数据,因为插入数据和 其他 查询 修改 更新数据条件不一样
    数据 = [{
        0: [
            {"name": 'GFGF'},
            {"age": 3333},
            {"sex": 1}
        ]
    }]
    '''
luoxis.mysql.删(dbManager,表名:str,WHERE) #删除数据
    # 删
    # 如果 条件很多 就在字典里加条件就可以,如果只有一条数据,就写一个字典就好
    # 0 没有任何条件
    # 1 是 = 号
    # 2 是 > 号
    # 剩下具体看 Judeg_parameter方法
    '''
    WHERE = [{
        1: [{
            "name": 'FFFF',
            "sex": 13
        }],
        2: [{
            "age": 300
        }]
    }]
    '''
luoxis.mysql.改(dbManager,表名,数据,WHERE=None) #改数据,更新数据
    '''
    WHERE = [{
        1: [{
            "ID": 10,
            "name": "RRR"
        }]
    }]
    数据 = [{
        1: [{
            "name": 'TTT',
            "sex": 6
        }]
    }]
    '''
luoxis.mysql.查(dbManager,表名:str,字段:list,WHERE=None) #查数据
    """
    condition: 传入None 则没有查询条件(就会返回所有数据), 传入查询条件,则查询传入条件的规则
    get_one: 查询是否查一条 还是查询所有 False 是符合条件的所有东西  True是查符合条件的一条数据
    字段 = ['用户名','密码']
    WHERE = [{
        1: [{
            "ID": 4,
            "name": "DDD"
        }]
    }]
    """

1.02a3更新内容

MySQL封装类

这里就不多说了,直接使用luoxis.mysql.dbManager或者luoxis.mysql下面的函数就行,它的本体在下面这篇文章介绍

下面有独特的两个方法

host = 'localhost'  #数据库地址
port = 3306   #数据库端口
db = 'mysql_test'  #数据库名
user = 'root'  #数据库用户名
password = ''  #数据库密码

# ---- 用pymysql 操作数据库
def get_connection():
    conn = pymysql.connect(host=host, port=port, db=db, user=user, password=password)
    return conn

def sql(sql):
    db = get_connection()
    cursor = db.cursor()
    cursor.execute(sql)
    db.commit()
    db.close()
    return cursor.fetchone()
    #print(check_it(sql))

def sqls(sql):
    data = list()
    db = get_connection()
    cursor = db.cursor()
    cursor.execute(sql)
    db.commit()
    db.close()   
    rest=cursor.fetchall()
    for i in rest:
        data.append(i)
    return data

这个是mysql.py开头的方法,luoxis内测版本用的,没事可以注释掉

sqls方法

这个方法可以输出批量的数据

更新内容二:自动获取官方最新版本

懂得都懂

注意事项

1.必须按照文档的去做,只要你按照文档去做通常没有问题,注意更新最新版本

2.必须正确配置并安装go-cqhttp,以下是推荐的配置文件

# go-cqhttp 默认配置文件

account: # 账号相关
  uin:  # QQ账号
  password:  # 密码为空时使用扫码登录
  encrypt: false  # 是否开启密码加密
  status: 0      # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
  relogin: # 重连设置
  delay: 3   # 首次重连延迟, 单位秒
  interval: 3   # 重连间隔
  max-times: 0  # 最大重连次数, 0为无限制

  # 是否使用服务器下发的新地址进行重连
  # 注意, 此设置可能导致在海外服务器上连接情况更差
  use-sso-address: true
  allow-temp-session: true

heartbeat:
  # 心跳频率, 单位秒
  # -1 为关闭心跳
  interval: 5

message:
  # 上报数据类型
  # 可选: string,array
  post-format: string
  # 是否忽略无效的CQ码, 如果为假将原样发送
  ignore-invalid-cqcode: false
  # 是否强制分片发送消息
  # 分片发送将会带来更快的速度
  # 但是兼容性会有些问题
  force-fragment: false
  # 是否将url分片发送
  fix-url: false
  # 下载图片等请求网络代理
  proxy-rewrite: ''
  # 是否上报自身消息
  report-self-message: false
  # 移除服务端的Reply附带的At
  remove-reply-at: false
  # 为Reply附加更多信息
  extra-reply-data: false
  # 跳过 Mime 扫描, 忽略错误数据
  skip-mime-scan: false

output:
  # 日志等级 trace,debug,info,warn,error
  log-level: warn
  # 日志时效 单位天. 超过这个时间之前的日志将会被自动删除. 设置为 0 表示永久保留.
  log-aging: 15
  # 是否在每次启动时强制创建全新的文件储存日志. 为 false 的情况下将会在上次启动时创建的日志文件续写
  log-force-new: true
  # 是否启用 DEBUG
  debug: false # 开启调试模式

# 默认中间件锚点
default-middlewares: &default
  # 访问密钥, 强烈推荐在公网的服务器设置
  access-token: ''
  # 事件过滤器文件目录
  filter: ''
  # API限速设置
  # 该设置为全局生效
  # 原 cqhttp 虽然启用了 rate_limit 后缀, 但是基本没插件适配
  # 目前该限速设置为令牌桶算法, 请参考:
  # https://baike.baidu.com/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin
  rate-limit:
    enabled: false # 是否启用限速
    frequency: 1  # 令牌回复频率, 单位秒
    bucket: 1     # 令牌桶大小

database: # 数据库相关设置
  leveldb:
    # 是否启用内置leveldb数据库
    # 启用将会增加10-20MB的内存占用和一定的磁盘空间
    # 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
    enable: true

# 连接服务列表
servers:
  # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
  #- http: # http 通信
  #- ws:   # 正向 Websocket
  #- ws-reverse: # 反向 Websocket
  #- pprof: #性能分析服务器
  # HTTP 通信设置
  - http:
      # 服务端监听地址
      host: 0.0.0.0
      # 服务端监听端口
      port: 5700
      # 反向HTTP超时时间, 单位秒
      # 最小值为5,小于5将会忽略本项设置
      timeout: 5
      # 长轮询拓展
      long-polling:
        # 是否开启
        enabled: false
        # 消息队列大小,0 表示不限制队列大小,谨慎使用
        max-queue-size: 2000
      middlewares:
       <<: *default # 引用默认中间件
      # 反向HTTP POST地址列表
      post :
      #- url: '' # 地址
      #  secret: ''           # 密钥
      - url: 'http://localhost:5000/' # 地址
      secret: ''          # 密钥

3.读着文档有不适的地方下面评论区自行评论,别来QQ吵我

4.我不是大佬,技术有限

{
'title' :'luoxis1.0文档',
'Current page link''https://www.df100.ltd/279.asp',
'author''星姮十织',
'copyright': '维度前沿|Dimension Frontier © 2020-2023. 版权所有',
}

评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇