易语言制作QQ机器人插件源码(MYPCQQ,酷Q)

yx 2018-09-0217:07:44易语言制作QQ机器人插件源码(MYPCQQ,酷Q)已关闭评论217.6K阅读20分55秒

这大概是我一年以前的提出的构思,然后搭建了框架(框架完成度百分之60)。当时看到无论是酷Q还是MYPCQQ制作插件虽然简单,但还不能够让一部分人随心所欲的做自己想要的插件。所以我做了喵喵后还是觉得不够完美,所以提出一个构思让更加小白的人也能做机器人插件。理论上是可行的。我做一个中间组件,理论上也负责群管这方面,娱乐交给第三方来做。我提供娱乐模块和SDK进行开发中间组件的应用。后来因为事情没法进行完善,就是搭建了框架。如感兴趣看上了这个构思可以下载来进行完成。框架是通用的,可以自行按照要求进行改变。

.版本 2

.程序集 框架基础架构
.程序集变量 当前运行目录, 文本型

.子程序 框架_初始化, 整数型, , 首次或其他初始化

当前运行目录 = 取运行目录 () + “\”
框架_目录列出 ()
框架_文件输出 ()
处理事件 ()
框架_返回文本账号载入 ()
模块_输出日志 (“system 初始化完成”, 3)
返回 (1)

.子程序 框架_目录列出, 整数型, , 列出所有目录

模块_输出日志 (“当前运行:” + 当前运行目录, 3)
.如果真 (文件是否存在 (当前运行目录 + “system”) ≠ 真)  ' 列出总目录且检测是否存在  如存在进入自检部分
    .如果真 (创建目录 (当前运行目录 + “system”) = 真)  ' 创建模块组件的总目录
        模块_输出日志 (“system 创建成功”, 3)
        .判断开始 (创建目录 (当前运行目录 + “system\Plugin”) = 真)  ' 创建应用目录
            模块_输出日志 (“system\Plugin 创建成功”, 3)
        .默认
            模块_输出日志 (“system\Plugin 创建失败”, 3)
        .判断结束
        .判断开始 (创建目录 (当前运行目录 + “system\set”) = 真)  ' 创建配置文件总目录
            模块_输出日志 (“system\set 创建成功”, 3)
        .默认
            模块_输出日志 (“system\set 创建失败”, 3)
        .判断结束
        .判断开始 (创建目录 (当前运行目录 + “system\group”))
            模块_输出日志 (“system\group 创建成功”, 3)
        .默认
            模块_输出日志 (“system\group 创建失败”, 3)
        .判断结束
        .判断开始 (创建目录 (当前运行目录 + “system\group\xml”))  ' 已分群下的xml目录
            模块_输出日志 (“system\group\xml 创建成功”, 3)
        .默认
            模块_输出日志 (“system\group\xml 创建失败”, 3)
        .判断结束
        .判断开始 (创建目录 (当前运行目录 + “system\set\xml”) = 真)  ' 无分群下的xml目录
            模块_输出日志 (“system\set\xml 创建成功”, 3)
        .默认
            模块_输出日志 (“system\set\xml 创建失败”, 3)
        .判断结束

        模块_输出日志 (“system 列出完成”, 3)
        返回 (1)
    .如果真结束
    模块_输出日志 (“system 列出失败”, 3)
    返回 (2)
.如果真结束
框架_文件夹自检 ()
返回 (1)

.子程序 框架_文件输出, 整数型, , 输出一系列的所有运行必备文件
.局部变量 密匙, 文本型, , , 这是一个初始化的中间密匙,如果存在证明已列出成功,如果未存在证明未列出过

密匙 = 读配置项 (当前运行目录 + “system\set\sut.ini”, “set”, “sut”, “0”)
.如果真 (密匙 ≠ “kjbabhsdhbsdhsbadaslkdnsajdbsandlskh”)
    .如果真 (写配置项 (当前运行目录 + “system\set\sut.ini”, “set”, “sut”, “kjbabhsdhbsdhsbadaslkdnsajdbsandlskh”) = 真)  ' 输出一个固定密匙 用于检测是否首次初始化
        模块_输出日志 (“system\set\sut.ini 写入完成”, 3)
        .判断开始 (写到文件 (当前运行目录 + “system\set\mmt.ini”, 到字节集 (#临时空数据)) = 真)  ' 输出管理配置文件
            模块_输出日志 (“system\set\mmt.ini 写入完成”, 3)
        .默认
            模块_输出日志 (“system\set\mmt.ini 写入失败”, 3)
        .判断结束
        .判断开始 (写到文件 (当前运行目录 + “system\dispose.dll”, #dispose) = 真)  ' 输出中间组件函数DLL
            模块_输出日志 (“system\dispose.dll 写入完成”, 3)
        .默认
            模块_输出日志 (“system\dispose.dll 写入失败”, 3)
        .判断结束
        .判断开始 (写到文件 (当前运行目录 + “system\set\msgs.ini”, 到字节集 (#临时空数据)) = 真)  ' 输出模块设置配置文件
            模块_输出日志 (“system\set\msgs.ini 写入完成”, 3)
        .默认
            模块_输出日志 (“system\set\msgs.ini 写入失败”, 3)
        .判断结束
        .判断开始 (写到文件 (当前运行目录 + “system\set\group.ini”, 到字节集 (#临时空数据)) = 真)  ' 输出群组文本提示配置文件
            模块_输出日志 (“system\set\group.ini 写入完成”, 3)
        .默认
            模块_输出日志 (“system\set\group.ini 写入失败”, 3)
        .判断结束
        .判断开始 (写到文件 (当前运行目录 + “system\group\group.ini”, 到字节集 (#临时空数据)) = 真)  ' 输出群组分群文本提示配置文件
            模块_输出日志 (“system\group\group.ini 写入完成”, 3)
        .默认
            模块_输出日志 (“system\group\group.ini 写入失败”, 3)
        .判断结束
        返回 (1)
    .如果真结束
    模块_输出日志 (“system\set\sut.ini 列出失败”, 3)
    返回 (1)
.如果真结束
框架_文件自检 ()
返回 (1)

.子程序 框架_文件夹自检, 整数型, , 首次初始化完成后进入自检

模块_输出日志 (“system 已初始化”, 3)
.判断开始 (创建目录 (当前运行目录 + “system\Plugin”) = 真)  ' 自检部分 存在返回假
    模块_输出日志 (“system\Plugin 缺失/已恢复”, 3)
.默认
    模块_输出日志 (“system\Plugin 自检完成”, 3)
.判断结束
.判断开始 (创建目录 (当前运行目录 + “system\set”) = 真)  ' 自检部分 存在返回假
    模块_输出日志 (“system\set 缺失/已恢复”, 3)
.默认
    模块_输出日志 (“system\set 自检完成”, 3)
.判断结束
.判断开始 (创建目录 (当前运行目录 + “system\group”))
    模块_输出日志 (“system\group 缺失/已恢复”, 3)
.默认
    模块_输出日志 (“system\group 自检完成”, 3)
.判断结束
.判断开始 (创建目录 (当前运行目录 + “system\group\xml”))
    模块_输出日志 (“system\group\xml 缺失/已恢复”, 3)
.默认
    模块_输出日志 (“system\group\xml 自检完成”, 3)
.判断结束
.判断开始 (创建目录 (当前运行目录 + “system\set\xml”) = 真)  ' 自检部分 存在返回假
    模块_输出日志 (“system\set\xml 缺失/已恢复”, 3)
.默认
    模块_输出日志 (“system\set\xml 自检完成”, 3)
.判断结束

返回 (1)

.子程序 框架_文件自检, 整数型, , 首次初始化完成后进入自检

.判断开始 (文件是否存在 (当前运行目录 + “system\set\mmt.ini”) = 真)  ' 不同于创建目录部分  如直接写入只会覆盖  所以只能检测  检测到文件不存在即创建
    模块_输出日志 (“system\set\mmt.ini 自检完成”, 3)
.默认

    .判断开始 (写到文件 (当前运行目录 + “system\set\mmt.ini”, 到字节集 (#临时空数据)) = 真)
        模块_输出日志 (“system\set\mmt.ini 缺失/已恢复”, 3)
    .默认
        模块_输出日志 (“system\set\mmt.ini 缺失/恢复错误,检查文件权限”, 3)
    .判断结束

.判断结束
.判断开始 (文件是否存在 (当前运行目录 + “system\dispose.dll”) = 真)
    模块_输出日志 (“system\dispose.dll 自检完成”, 3)
.默认

    .判断开始 (写到文件 (当前运行目录 + “system\dispose.dll”, #dispose) = 真)
        模块_输出日志 (“system\dispose.dll 写入完成”, 3)
    .默认
        模块_输出日志 (“system\dispose.dll 写入失败”, 3)
    .判断结束

.判断结束
.判断开始 (文件是否存在 (当前运行目录 + “system\set\msgs.ini”) = 真)  ' 不同于创建目录部分  如直接写入只会覆盖  所以只能检测  检测到文件不存在即创建
    模块_输出日志 (“system\set\msgs.ini 自检完成”, 3)
.默认

    .判断开始 (写到文件 (当前运行目录 + “system\set\msgs.ini”, 到字节集 (#临时空数据)) = 真)
        模块_输出日志 (“system\set\msgs.ini 缺失/已恢复”, 3)
    .默认
        模块_输出日志 (“system\set\msgs.ini 缺失/恢复错误,检查文件权限”, 3)
    .判断结束

.判断结束
.判断开始 (文件是否存在 (当前运行目录 + “system\set\group.ini”) = 真)  ' 不同于创建目录部分  如直接写入只会覆盖  所以只能检测  检测到文件不存在即创建
    模块_输出日志 (“system\set\group.ini 自检完成”, 3)
.默认

    .判断开始 (写到文件 (当前运行目录 + “system\set\group.ini”, 到字节集 (#临时空数据)) = 真)
        模块_输出日志 (“system\set\group.ini 缺失/已恢复”, 3)
    .默认
        模块_输出日志 (“system\set\group.ini 缺失/恢复错误,检查文件权限”, 3)
    .判断结束

.判断结束
.判断开始 (文件是否存在 (当前运行目录 + “system\group\group.ini”) = 真)  ' 不同于创建目录部分  如直接写入只会覆盖  所以只能检测  检测到文件不存在即创建
    模块_输出日志 (“system\group\group.ini 自检完成”, 3)
.默认

    .判断开始 (写到文件 (当前运行目录 + “system\group\group.ini”, 到字节集 (#临时空数据)) = 真)
        模块_输出日志 (“system\group\group.ini 缺失/已恢复”, 3)
    .默认
        模块_输出日志 (“system\group\group.ini 缺失/恢复错误,检查文件权限”, 3)
    .判断结束

.判断结束

返回 (1)


.子程序 框架_文件更新, , , 更新核心DLL或新增文件

.判断开始 (文件_去扩展名 (当前运行目录 + “system\dispose.dll”) = 真)  ' 最开始目的是想要每次启动检测一遍  后改为 接收服务器消息进行检测
    .判断开始 (写到文件 (当前运行目录 + “system\dispose.dll”, #dispose) = 真)
        文件_删除 (当前运行目录 + “system\dispose”)
        模块_输出日志 (“system\dispose.dll 更新完成”, 3)
    .默认
        模块_输出日志 (“system\dispose.dll 更新失败”, 3)
    .判断结束

.默认
    模块_输出日志 (“system\dispose.dll 该文件出现异常,无法更新至最新”, 3)
.判断结束


.子程序 框架_返回文本账号载入, , , 返回文本模块载入当前框架下所有在线的账号
.局部变量 账号_, 文本型
.局部变量 i, 整数型
.局部变量 i1, 整数型
.局部变量 账号, 文本型, , "0"

账号_ = 模块_取当前在线QQ ()
账号 = 分割文本 (账号_, #换行符, )
.计次循环首 (取数组成员数 (账号), i)
    .计次循环首 (主窗口.返回文本_账号.取项目数 (), i1)
        .如果真 (账号 [i] = 主窗口.返回文本_账号.取项目文本 (i1 - 1))
            跳出循环 ()
        .如果真结束

    .计次循环尾 ()
    .如果真 (i1 > 主窗口.返回文本_账号.取项目数 ())
        主窗口.返回文本_账号.加入项目 (账号 [i], )
    .如果真结束

.计次循环尾 ()
模块_输出日志 (“当前在线账号载入完毕”, 2)

.子程序 框架_返回文本列出群ID, , , 根据选中账号载入当前选中的账号下群ID
.局部变量 JSON文本_ID, 文本型
.局部变量 JSON处理_ID, 文本型
.局部变量 成员_ID, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 i1, 整数型

JSON文本_ID = 模块_取群JSON文本 (主窗口.返回文本_账号.取项目文本 (主窗口.返回文本_账号.现行选中项))
JSON处理_ID = 模块_JSON处理_群ID (JSON文本_ID)
成员_ID = 分割文本 (JSON处理_ID, “,”, )
.计次循环首 (取数组成员数 (成员_ID), i)
    .计次循环首 (主窗口.返回文本_群.取项目数 (), i1)
        .如果真 (成员_ID [i] = 主窗口.返回文本_群.取项目文本 (i1 - 1))
            跳出循环 ()
        .如果真结束

    .计次循环尾 ()
    .如果真 (i1 > 主窗口.返回文本_群.取项目数 ())
        主窗口.返回文本_群.加入项目 (成员_ID [i], )
    .如果真结束

.计次循环尾 ()
模块_输出日志 (“当前在线账号内群列表载入完毕”, 2)


.子程序 框架_选中群信息显示



.子程序 框架_数据写出, , , 写出所有数据
.局部变量 现行选中项, 整数型


' 输出模块设置 这一部分 新建一个独立的ini保存
.判断开始 (主窗口.组件_启用勾选_消息.选中 = 真)
    写配置项 (当前运行目录 + “system\set\msgs.ini”, “msgs”, “msg”, “OK”)
.默认
    写配置项 (当前运行目录 + “system\set\msgs.ini”, “msgs”, “msg”, “NO”)
.判断结束
.判断开始 (主窗口.组件_启用勾选_功能.选中 = 真)
    写配置项 (当前运行目录 + “system\set\msgs.ini”, “msgs”, “gn”, “OK”)
.默认
    写配置项 (当前运行目录 + “system\set\msgs.ini”, “msgs”, “gn”, “NO”)
.判断结束
.判断开始 (主窗口.组件_启用勾选_应用.选中 = 真)
    写配置项 (当前运行目录 + “system\set\msgs.ini”, “msgs”, “cj”, “OK”)
.默认
    写配置项 (当前运行目录 + “system\set\msgs.ini”, “msgs”, “cj”, “NO”)
.判断结束
.判断开始 (主窗口.组件_启用勾选_返回.选中 = 真)
    写配置项 (当前运行目录 + “system\set\msgs.ini”, “msgs”, “fh”, “OK”)
.默认
    写配置项 (当前运行目录 + “system\set\msgs.ini”, “msgs”, “fh”, “NO”)
.判断结束

' 输出返回文本设置  部分
写配置项 (当前运行目录 + “system\set\mmt.ini”, “mgent”, “lomt”, 主窗口.组件_数据_一级管理.内容)
写配置项 (当前运行目录 + “system\set\mmt.ini”, “mgent”, “tsmt”, 主窗口.组件_数据_二级管理.内容)
写配置项 (当前运行目录 + “system\set\mmt.ini”, “mgent”, “tlom”, 主窗口.组件_数据_三级管理.内容)

' 根据API获取到当前登录的账号  通过账号获取到群号  然后再利用获取到的群号获取当前已编辑的内容



.子程序 框架_数据载入, 整数型, , 载入所有数据 


以上为部分代码
下载信息 源码名称: 模块插件 源码适用: 易语言 酷Q 源码版本: 0.1
下载地址
继续阅读
世界唯一不变的就是变化,世界唯一可能的就是不可能。
用易包来写易程序的小程序/插件/甚至可以写补丁 源码例程

用易包来写易程序的小程序/插件/甚至可以写补丁

如果说易模块相当于C语言里面的lib文件,则易包就相当于dll文件,也就是说,易模块是在易程序之间建立静态共享,而易包是建立动态共享,避免以前易模块修改后需要重新编译所有使用了它的易程序的问题,普通的...
易语言“循环体”(变量/计次/判断/循环)初步理解和运用 技术分享

易语言“循环体”(变量/计次/判断/循环)初步理解和运用

引续 因为变量/计次/判断/循环等循环体而经常蒙了,不知其有何用处,具体用法又是什么? 我们先来看看易语言知识库给与的解释 变量循环:执行本命令将利用变量对循环体内的命令进行循环执行。 计次循环:执行...