Skip to content

组件

  • zhin 提供了组件以增加代码的复用性,zhin 的组件系统在一定程度上参考了 Vue.js 的语法,从而实现了高易学性和一定的移植性
  • 在组件中,你可以直接获取到当前会话的一些变量,这类似于 vue 的 vuex,是根据会话产生环境自动生成的

文本插值

  • 首先我们来看数据绑定,最基本形式是使用“Mustache”语法(双花括号)的文本插值:
    聊天记录
    master
    send {{session.sender.user_id}}
    知音
    1659488338
    可以看到,在使用文本插值后,可以很快速的让机器人输出信息,我们来看在实际运行中的一个 demo
聊天记录
master
send [日志][用户:{{session.sender.nickname}}({{session.sender.user_id}})]是一个来自{{session.sender.area == ""?"未知":sender.area}}的{{session.sender.age}}岁{{session.sender.sex == "unknown"?"人妖":sender.sex}}
知音
[日志][用户:master(1659488338)]是一个来自四川的26岁male

image 标签

  • image 标签提供了一种快速发送照片的方法,请看下面的例子
    聊天记录
    master
    send <image src="https://maohaoji.com/image标签.gif"/>
    知音
    可以看到,使用 src 标签可以很快的发送想要发送的图片,下面我们来看一个使用 image 标签获取用户头像的实例
    聊天记录
    master
    send <image :src="`https://q1.qlogo.cn/g?b=qq&nk=${sender.user_id}&s=100`"/>
    知音
    ps 这里的:src 代表此处使用变量为src赋值,在 zhin 中,不支持v-bind代替这个语法,请注意与vue的区别;session可选字段参考`Session`

template 标签

  • template 标签主要是更加规范和语义化,在 zhin 中可以对元素进行分组 下面这个例子可以体现 template 对元素的分组

    ps <random>会随机输出内部元素,所以实际输出不一定是图示

    聊天记录
    master
    send 你喜欢<random>
    <template>御姐</template>
    <template>萝莉</template>
    </random>
    知音
    你喜欢萝莉

    下面这个例子可以体现使用 template 便签的美观性

    聊天记录
    master
    send <template>
    今日图片
    <image src="https://maohaoji.com/image标签.gif"/>
    欢迎您{{session.sender.nickname}}({{session.sender.user_id}})
    <image :src="`https://q1.qlogo.cn/g?b=qq&nk=${sender.user_id}&s=100`"/>
    </template>
    知音
    今日图片 欢迎您 master(1659488338)

random 标签

  • 相比于手动使用 Math.random()获取随机数然后输出元素,使用 random 随机输出元素的效率以及代码量、可读性都有不错的改善

ps random 内元素请尽可能使用<template>标签包装,以免出现奇怪的错误

下来我们来看一个例子

聊天记录
master
send <random>
<template>我猜你喜欢>image src="https://maohaoji.com/zhindocimage/%E9%BB%91%E4%B8%9D.jpg"/ ></template >
<template>我猜你喜欢>image src="https://maohaoji.com/zhindocimage/%E7%99%BD%E4%B8%9D.jpeg"/> </template>
<template>我猜你喜欢>image src="https://maohaoji.com/zhindocimage/%E6%B8%94%E7%BD%91.jpg"/> </template>
</random>
知音
我猜你喜欢

time 标签

  • time 标签相比于 new Date()然后解析来获取时间字符串来说是很方便容易的,它会输出 yyyy-MM-dd hh:mm:ss 格式的时间,我们来看有个例子

    聊天记录
    master
    send 现在是<time/>
    知音
    现在是 2023-02-0518:52:02
  • 我们可以用来实现一个有趣的输出

    聊天记录
    master
    send <image :src="`https://q1.qlogo.cn/g?b=qq&nk=${sender.user_id}&s=100`" />[日志][<time />][用户:{{session.sender.nickname}}({{session.sender.user_id}})]是一个来自{{session.sender.area == ""?"未知":sender.area}}的{{session.sender.age}}岁{{session.sender.sex == "unknown"?"人妖":sender.sex}}
    知音
    [日志][2023-02-0519:49:22][用户:master(1659488338)]是一个来自四川的 26 岁 male

at 标签

  • 使用 at 标签可以很容易的 at 群内成员,示例如下

    聊天记录
    master
    send <at user_id="1659488338" />
    知音
    @master
  • 当然,该标签也可以使用 v-bind 标签实现数据绑定,类似于以下内容

    聊天记录
    master
    send <at :user_id="sender.user_id" />
    知音
    @master
  • 结合<random>标签后,很容易的可以实现随机 at

    聊天记录
    master
    send <random>
    <template>taidixiong233
    <at user_id="2870926164" />
    </template>
    <template>master
    <at user_id="1689919782" />
    </template>
    <template>小叶子
    <at user_id="2870926164" />
    </template>
    </random>
    知音
    @taidixiong233
    taidixiong233
    怎么啦
    taidixiong233
    机器人at我干嘛咩

prompt 标签

  • prompt 标签可以快速的实现表单收集,非常的好用,实例如下
聊天记录
master
send 你是<prompt>请输入姓名</prompt>,你在<prompt>请输入地址</prompt>,是个可爱的<prompt>请输入性别</prompt>孩子
知音
请输入姓名
master
master
知音
请输入地址
master
四川
知音
请输入性别
master
知音
你是master,你在四川,是个可爱的男孩子
taidixiong233
这个机器人好酷

confirm 标签

  • confirm 标签可以问询用户是否确定、继续,我们来看一段演示
    聊天记录
    master
    send 你的选择是<confirm/>
    知音
    输入 yes,y,Yes,YES,Y,.,。,确认为确认
    master
    yes
    知音
    你的选择是 true

execute 标签

  • execute 标签可以用于执行机器人命令,下图给出了示例,具体命令列表请查看命令列表
    聊天记录
    master
    send <execute>status</execute>
    知音
    当前状态:
    系统架构:Zhin 自研
    CPU 架构:65536 核 Zhin(R)CPU9900KF-MaxPro
    内存:780.26MB/1048576GB(00.01%)
    进程内存占比:0.01%(45.97MB/1048576GB)
    持续运行时间:2149 小时 29 分钟
    掉线次数:0 次
    发送消息数:3521 条
    接收消息数:213230 条
    消息频率:1 条/分
    taidixiong233
    哇趣,65536核心??认真的别搞
    taidixiong233
    1048576GB??1PB的内存,这都比我硬盘空间大了

face 标签

  • face 标签可以快速的发送表情消息,需要使用表情的id,示例如下

    聊天记录
    master
    send <face id="2" />
    知音
  • 这是一个组合使用face标签的例子

    聊天记录
    master
    send <random><face id="1" /><face id="2" /></random>
    知音
    taidixiong233
    机器人发的表情色迷迷的