查看: 168|回复: 0

[图文教程] 契约机器人开发教程/窗体和契约API交互使用

[复制链接]

1497

主题

1499

帖子

4790

积分

网站编辑

Rank: 8Rank: 8

积分
4790
发表于 2020-6-17 14:43:17 | 显示全部楼层 |阅读模式
教程内容
对于开发新人往往搞不懂,窗体和SDK之间怎样进行交互,这个问题也困扰了作者很久,走了很多弯路,因此将这部分内容单独整理出来 与大家进行分享
打开窗体
契约SDK的_menuA 和_menuB两个函数对应可以打开窗体,具体代码是调用  载入函数,如下图所示:

契约机器人开发教程/窗体和契约API交互使用

契约机器人开发教程/窗体和契约API交互使用

这样在加载插件后,界面上的菜单 就会显示菜单,点击对应表项就可以打开窗体

契约机器人开发教程/窗体和契约API交互使用

契约机器人开发教程/窗体和契约API交互使用

如果想修改菜单项显示文本,可以在插件配置(常量表->应用配置)最下方看到配置信息,修改对应文字即可

契约机器人开发教程/窗体和契约API交互使用

契约机器人开发教程/窗体和契约API交互使用

如果你对json比较熟悉,也可以删除一个菜单 只保留一个菜单项
窗体设置群监控关键字进行动态回复
一般窗体中提供配置信息,让机器人主人动态配置,实现动态化,我们来实现一个简单例子:
窗口中配置问题,同时配置问题答案,当有好友发的消息和问题一样,则机器人自动回复问题答案。
通过这个小功能,来学习窗体和契约SDK进行交互
新建窗体
右侧->窗口鼠标右键->插入新窗口  

契约机器人开发教程/窗体和契约API交互使用

契约机器人开发教程/窗体和契约API交互使用

打开窗口界面,窗口的名称非常重要,经常需要用到

契约机器人开发教程/窗体和契约API交互使用

契约机器人开发教程/窗体和契约API交互使用

在窗体中增加两个文本框,一个接收输入的问题,一个接收输入的答案,如下图所示:

契约机器人开发教程/窗体和契约API交互使用

契约机器人开发教程/窗体和契约API交互使用

功能实现
如果机器人好友私聊消息,匹配到窗体上设置的问题,则机器人发送窗体上设置的答案
还记得 在哪里开始编写代码么? 在函数  _eventPrivateMsg 中
代码非常简单,主要在 _eventPrivateMsg 中 主要获得窗体上配置的问题和答案?
首先 窗口名称为 窗口2,文本框的名称为 编辑框1,取用户输入的内容 最终是
窗口2.编辑框1.内容,完整的路径
完整代码如下:
.版本 2

.判断开始 (subType = 11)  ' /来自好友
    .如果真 (msg = 窗口2.编辑框1.内容)
        QY.发送好友消息 (QQID, fromQQ, 窗口2.编辑框2.内容)

    .如果真结束
如果发送的内容,与窗口设置内容相同,则发送设置的答案
为了能打开窗口,还需要在菜单函数中载入窗口2,代码如下
.版本 2

.子程序 _menuA, 整数型, 公开

' 本子程序会在【主线程】中被调用。
载入 (窗口2, , 假)
返回 (0)
编译插件,加载
测试如下:

契约机器人开发教程/窗体和契约API交互使用

契约机器人开发教程/窗体和契约API交互使用

使用全局变量 保存窗体设置
如上代码 正常使用没有问题,但如果窗口被关闭,我们在给机器人发消息 良心在么,会发现插件会报如下错误

契约机器人开发教程/窗体和契约API交互使用

契约机器人开发教程/窗体和契约API交互使用

这是因为使用 窗口2.编辑框1.内容 读取内容时,必须窗口时打开状态,否则会因为找不到窗体进行报错
怎样解决这个问题? 可以将问题和答案保存到全局变量中这样就可以正常使用,为窗体编辑框 设置全局变量:

契约机器人开发教程/窗体和契约API交互使用

契约机器人开发教程/窗体和契约API交互使用

代码如下:

.版本 2

.子程序 _编辑框1_内容被改变

global_question = 编辑框1.内容


.子程序 _编辑框2_内容被改变
.局部变量 global_answer, 文本型

global_answer = 编辑框2.内容
对应的 _eventPrivateMsg 中的代码修改如下:
.版本 2

.判断开始 (subType = 11)  ' /来自好友
    .如果真 (msg = global_question)
        QY.发送好友消息 (QQID, fromQQ, global_answer)
编译后 加载插件 在执行,发现关闭窗口 也不会报错,完美解决了问题
使用配置文件 保存窗体设置
还有一种保存 窗体配置的方法,将窗体设置保存到 配置文件中 ,代码如下:
在窗口关闭时,将在窗体上 配置的信息保存到配置文件中
.版本 2

.子程序 _窗口2_窗口可否被关闭, 逻辑型


写配置项 (应用目录 + “\config.txt”, “config”, “question”, 编辑框1.内容)
写配置项 (应用目录 + “\config.txt”, “config”, “answer”, 编辑框2.内容)
​   
然后在好友消息处理函数中修改为如下代码:
.版本 2

.判断开始 (subType = 11)  ' /来自好友
    .如果真 (msg = 读配置项 (应用目录 + “\config.txt”, “config”, “question”, ))

        QY.发送好友消息 (QQID, fromQQ, 读配置项 (应用目录 + “\config.txt”, “config”, “answer”, ))
这样在窗体被关闭后,机器人功能仍然可以使用,通过配置文件,可以设置多个变量 ,比全局变量的方法 更通用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表