情迁QQ机器人1.8.4新特性 可空变量的构建

存在的意义

变量的构建方便简化执行过程,特别是执行SQL语句的时候,但是仅仅用到这上面不能充分体现它的优点,实际上在制作卡片消息的时候就非常有作用了,可以方便用户交互,
可以输入卡片 $我的名片直接生成自己的名片卡
可以输入卡片 $他的名片(694886526,default,default,default) 直接生成对应的qq的卡片.
这里有3个694886526但是经过后面的改良增加了{arg传递的参数下标,默认值}也就是{arg0|arg,默认值}语法,因此可以让用户更便捷,也让自己更省心的维护代码。

可空变量的灵感来源于生成个人名片的的默认标题修改,默认标题其实够用了,但是如果给他个性化但是就涉及到一个问题,有的用户不知道该填写啥。所以就像到了一个规则定义,并解析.

select标记占位

语法select(默认值)
select标记的逻辑是优先让%s的参数用完,用完之后呢 比如 变量x(1,2,3,4,5)其中 1 2 3 是用来替换里面3个%s的,那么select(标记找到了之后则从4开始替换,如果有2个,那么刚好替换为4和5,如果 ,不足够了,那么显示的是select()之间的默认值

可空变量比参数变量更加牛逼了,因为允许为空,允许默认值占位。
举例:配置添加变量测试可空变量|变量1=%s 变量2=%s 可空变量1的内容是=select(你好) 可空变量2的内容是=select(我好) 可空变量2的内容是=select(大家好) 可空变量2的内容是=select(你非常棒)
这里面其中select为默认值,如果这个参数长度不够或者长度达到了但是为空或者为null或者为default则依然用原来的,否则用传递的。
使用效果如下:配置print $测试可空变量(我爱你,老婆,default,我不好,default,那天晚上我很开心)

打印的结果:变量1=我爱你 变量2=老婆 可空变量1的内容是=你好 可空变量2的内容是=我不好 可空变量2的内容是=大家好 可空变量2的内容是=那天晚上我很开心配置print $测试可空变量(我爱你,老婆,default,哈哈哈)
打印结果:变量1=我爱你 变量2=老婆 可空变量1的内容是=你好 可空变量2的内容是=哈哈 可空变量2的内容是=大家好 可空变量2的内容是=你非常棒

}D~3OXR)Z`P%S9(YVAV1{GP.png

可空变量的体验需要1.8.4版本的机器人才能体验。
1.8.4版本也会伴随q++插件的更新,

这次主要是优化了进程通讯相关的东西,也就是不用之前的通讯方式了,现在的方式可以双端通讯回调,更便捷,查询大量数据的时候最方便,或者是一下子查询很多昵称,比如输入参数 floor 的时候之前的版本只能显示QQ因为没办法查询,因为不是异步回调,发过去消息那边没法回调回来,为了实现这个不修改qq实现回调,我特么发现除了把机器人直接让qq加载外还有一种方式也可以实现。快哉,这简直为下一步构建更牛逼的机器人奠定了基础啊。

可重复位置变量

1、这个功能只要是借用c#语言的优点,他的优点就是可以避免重复写值,随意控制读取哪个参数,不需要区分先后顺序。
2、如果读取的变量不存在则读取空字符串,或者arg值后面的数值 也就是默认值,这比之前的可空参数更加牛逼了更加灵活了。

首先输入配置添加变量 多参指位变量|变量1=%s 变量2={arg0} 变量3={arg0} 变量4={arg0} 变量5={arg0} 读取参数3={arg2} 读取参数2={arg1} 读取参数5={arg4}

转换的结果

变量1=别重复我哦我是参数1 变量2=别重复我哦我是参数1 变量3=别重复我哦我是参数1 变量4=别重复我哦我是参数1 变量5=别重复我哦我是参数1 读取参数3=参数3 读取参数2=参数2 读取参数5=我是参数5

可重复位置又可定义默认值变量

首先添加变量

配置添加变量 多参指位可默认值变量|变量1=%s 变量2={arg3,arg3的默认值} 变量3={arg0,arg0的默认值} 变量4={arg0} 变量5={arg0} 读取参数3={arg2} 读取参数2={arg1} 读取参数5={arg4,arg4的默认值}

验证

执行后输入配置print $多参指位可默认值变量()

变量1= 变量2=arg3的默认值 变量3=arg0的默认值 变量4= 变量5= 读取参数3= 读取参数2= 读取参数5=arg4的默认值

输入配置print $多参指位可默认值变量(发,发发发,default,default,我是参数5)
得出的结果:变量1=发 变量2=arg3的默认值 变量3=发 变量4=发 变量5=发 读取参数3= 读取参数2=发发发 读取参数5=我是参数5

注意点

{arg不能和select()共存,因为后者是用来取%s后面依次对应的值,而{arg也属于这个范围,会导致取错值。比如最后一个参数是select(前面的参数传递了,解析的是{arg那么这里读取的就是前面的,这类似与可变参数为什么只能放到最后面一个道理,这里要想解决矛盾除非select放到前面,另外由于我又进一步升级{arg变量因此select(昙花一现,开发到测试不到半小时,结果又一次更新。。select的优势是不需要记住到底是arg多少了,只需要填写默认值就行了。不过我决定改良select{arg语法同时存在的时候select永远是读取最后面的.那么select{arg}前面,但是解析传递的参数的时候得先计算%s总数+{arg总数,然后从这个位置往后面排。

image.png

默认变量[他的名片]是如何定义的?

image.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值