DDBOT的模板大致与GO标准库text/template
与相同,想深入了解请参考官方文档 。
注:DDBOT模板从v1.0.5
版本开始支持
DDBOT默认不启用自定义模板,当需要使用时,需要修改配置文件application.yaml
,在其中增加一段配置,并且重启bot:
template:
enable: true
如果配置成功,启动时将显示日志信息:已启用模板
。
配置成功后,DDBOT将会自动创建一个template
文件夹,用于存放所有的模板文件。
DDBOT会监控该文件夹目录,这意味着对模板的创建/修改/删除等操作,无需重启BOT即可生效,DDBOT会自动使用最新的模板。
模板是template
文件夹下的一个文件,后缀名为.tmpl
。
它是一个文本文件,可以使用文本编辑器进行编辑,它的文件名即是模板的名字,它的内容即是模板的内容。
创建一个模板,编辑其内容为:
这是一段文字,也是一段模板
该模板将发送为:
在模板中,所有的{{ ..... }}
都有特殊意义,例如:
- 使用
{{ pic "uri" }}
发送图片:
创建一个模板,编辑其内容为:
发送一张图片 {{ pic "https://i2.hdslb.com/bfs/face/0bd7082c8c9a14ef460e64d5f74ee439c16c0e88.jpg" }}
该模板将发送为:
在这个例子中,使用了一个模板函数pic
,它可以用来发送一张图片。
- 使用
{{ cut }}
发送分段消息:
创建一个模板,编辑其内容为:
一、啦啦啦
{{- cut -}}
二、啦啦啦
该模板将发送为:
在这个例子中,使用了一个模板函数cut
,它可以用来切分消息。
请注意括号内的短横线-
符号,它的作用是控制前后换行符。
- 使用模板变量:
.
符号表示引用一个模板变量,根据模板应用的场合,能够使用的模板变量也不尽相同。
例如:当自定义/签到
命令模板时,能够使用.score
变量与.success
变量。
创建一个模板,编辑其内容为:
{{- reply .msg -}}
{{ if .success -}}
签到大大大大大成功!获得1只萝莉,当前拥有{{.score}}只萝莉
{{- else -}}
明天再来吧,当前拥有{{.score}}只萝莉
{{- end }}
该模板将发送为:
这个例子还展示了回复消息语法:{{- reply .msg -}}
以及模板的条件控制语法:{{if}} {{else}} {{end}}
得益于模板的高度定制化能力,DDBOT现在支持通过模板发送消息的自定义命令:
例如可以创建一个/群主女装
命令,并让这个命令发送定义在模板内的群主女装照。
首先需要在配置文件application.yaml
中定义命令:
autoreply:
group:
command: [ "群命令1", "群命令2" ]
private:
command: [ "私聊命令1", "私聊命令2" ]
在上面这段配置中,自定义了两个群命令/群命令1
和/群命令2
,两个私聊命令/私聊命令1
和/私聊命令2
。
完成后需要创建对应的模板文件:
custom.command.group.群命令1.tmpl
custom.command.group.群命令2.tmpl
custom.command.private.私聊命令1.tmpl
custom.command.private.私聊命令2.tmpl
当触发/群命令1
的时候,则会自动发送模板消息custom.command.group.群命令1.tmpl
。
当触发/私聊命令1
的时候,则会自动发送模板消息custom.command.private.私聊命令1.tmpl
。
其他命令也遵守这个规则。
DDBOT现在支持通过模板发送消息的定时命令:
首先需要在配置文件application.yaml
中定义定时消息:
cronjob:
- cron: "* * * * *"
templateName: "定时1"
target:
private: [ 123 ]
group: [ ]
- cron: "0 * * * *"
templateName: "定时2"
target:
private: [ ]
group: [ 456 ]
在上面这段配置中,自定义了两条定时消息,完成后需要创建对应的模板文件:
custom.cronjob.定时1.tmpl
custom.cronjob.定时2.tmpl
定时消息的定时条件使用cron表达式
定义,可以在工具网站上选择类型:Linux
编辑和测试Cron表达式。
DDBOT使用五个字段的Cron表达式,这意味着最小的定时粒度为1分钟
。
完成配置后,定时1
会每分钟触发一次,触发时会私聊QQ号为123发送消息模板custom.cronjob.定时1.tmpl
。
定时2
会每小时触发一次,触发时会在QQ群456内发送消息模板custom.cronjob.定时2.tmpl
。
- {{- cut -}}
用于发送分段消息,上面已介绍过
- {{ reply .msg }}
用于回复消息,上面已介绍过
- {{ prefix }}
引用配置中的command prefix,默认为/
- {{ pic "图片地址" }}
用于发送图片,支持http/https
链接,以及本地路径。
图片格式支持 jpg / png / gif。
如果路径是一个文件夹,则会在文件夹内随机选择一张图片。
- {{ roll a b }}
在a ~ b范围内中随机一个数字,a b 返回值均为int64类型。
- {{ choose "a" "b" "c" }}
从传入的参数中随机返回一个,参数类型为string,支持变长参数。
以下为v1.0.6新增
- {{ at 123456 }}
发送@指定的qq号
- {{ icon 123456 }}
发送指定qq号的头像
以下为v1.0.7新增
- {{ hour }}
返回当前时间的小时数, 范围为[0, 23],类型为int
- {{ minute }}
返回当前时间的分钟数,范围为[0, 59],类型int
- {{ second }}
返回当前时间的秒数,范围为[0, 59],类型为int
- {{ month }}
返回当前时间的月份,范围为[1,12],类型为int
- {{ year }}
返回当前时间的年份,类型为int
- {{ day }}
返回当前时间为当月的第几天,类型为int
- {{ yearday }}
返回当前时间为当年的第几天,闰年范围为[1,366],非闰年范围为[1,365],类型为int
以下为v1.0.8新增
- {{ weekday }}
返回当前时间是本周的第几天,1~7分别表示周一至周日,范围为[1,7],类型为int
- 变量
{{ .at_targets }}
自定义命令现在支持@成员, 可以通过 {{ .at_targets }}来获取本次命令触发时@的成员的QQ号。
该变量为数组类型,可以搭配len
和index
等命令使用,例如:
{{- if gt (len .at_targets) 0 -}}
你@了{{ index .at_targets 0}}
{{- else -}}
请@TA使用命令喵
{{- end -}}
- 获取群成员信息
{{ member_info .group_code .member_code }}
获取群成员信息,.at_targets中的qq号可以搭配这个命令来获取被@的成员的信息,例如:
{{- if gt (len .at_targets) 0 -}}
{{- $t := index .at_targets 0 -}}
{{- $info := member_info .group_code $t -}}
你@了{{- $info.name }}
{{ $info.name }} 的性别是 {{ if eq $info.gender 2 }}男生{{ else if eq $info.gender 1 }}女生{{else}}秘密{{end}} 喵
{{- else -}}
请@TA使用命令喵
{{- end -}}
返回结果中可以使用的信息有:
name
:成员的群聊名字,如果没有设置,就是QQ资料名字
gender
:QQ资料性别,2表示男生,1表示女生,0表示未公开
permission
:QQ群权限,10表示群主,5表示管理员,1表示普通成员
- 带权重的
choose
现在choose
的每个元素后面支持一个可选的权重参数(必须是大于0的整数,如果省略则默认为1),进行随机时,将尊重权重设置,例如:
{{ choose "a" "b" 1 "c" 5 }}
在上面的结果中,结果是"c"的概率将是"a"和"b"的5倍,"a"和"b"的概率相同("a"的权重省略默认为1,b"的权重1也可以省略)。
数值上说,选中"c"的概率是
选中"a"和"b"的概率分别是
感觉上来说就像写了5次"c"。
- 完整文字参数
{{ .full_args }}
返回本次命令触发时附带的完整文字参数,与{{.args}}
的区别是:它不是一个数组,而是包含文字和空格的完整参数。
例如,当触发命令/test a b c
时:
{{.args}}
的内容是一个数组[]string{"a", "b", "c"}
,需要配合index
等命令使用。
{{ .full_args }}
的内容是"a b c",它是一个字符串而非数组。
- 一组类型转换函数
点击查看详情
{{ float64 123 }}
转换参数为float64
类型
{{ int 123 }}
转换参数为int
类型
int在32位和64位下表现不一致
{{ int64 123}}
转换参数为int64
类型
{{ toString 123 }}
转换参数为string
类型
- 一组数学函数
点击查看详情
函数名字末尾带f的表示它返回值是float64
,不带f的返回值为int64
- add / addf
{{ add 1 2}}
计算加法
- sub / subf
{{ sub 1 2}}
计算减法
- mul / mulf
{{ mul 2 2 }}
计算乘法
- div / divf
{{ div 10 5 }}
计算除法
- mod / modf
{{ mod 10 5 }}
计算余数
- 一组最值函数
点击查看详情
函数名字末尾带f的表示它返回值是float64
,不带f的返回值为int64
- max / maxf
{{ max 1 2 3 4 5 }}
返回最大值
- min / minf
{{ min 1 2 3 4 5 }}
返回最小值
- 一组哈希函数
点击查看详情
- base64encode
{{ base64encode "hello world" }}
base64的加密
- base64decode
{{ base64decode "aGVsbG8gd29ybGQ=" }}
base64的解密
- md5sum
{{ md5sum "hello world" }}
md5加密
- sha1sum
{{ sha1sum "hello world" }}
sha1加密
- sha256sum
{{ sha256sum "hellow world" }}
sha256sum加密
- adler32sum
{{ adler32sum "hellow world" }}
adler32sum加密
- uuid
{{ uuid }} 生成一个UUID
- 一组字符串函数
点击查看详情
- hasPrefix
{{ hasPrefix "aaa" "aaabcd" }}
检查字符串是否有指定前缀
- hasSuffix
{{ hasSuffix "aaa" "bcdaaa" }}
检查字符串是否有指定后缀
- contains
{{ contains "aaa" "bcdaaabcd" }}
检查字符串是否包含一个子字符串
- trim
{{ trim " aaa " }}
去掉字符串前后的空白字符
- trimSuffix
{{ trimSuffix "aaa" "bcdaaa" }}
去掉字符串的指定后缀,如果字符串没有指定后缀,则无效果
- trimPrefix
{{ trimPrefix "aaa" "aaabcd" }}
去掉字符串的指定前缀,如果字符串没有指定前缀,则无效果
- split
{{ split " " "foo bar baz" }}
按照指定字符串分割字符串,返回一个list
- join
{{ join " " (list "foor" "bar" "baz") }}
按照指定字符串拼接字符串,返回一个字符串
- trunc
{{ trunc 2 "abcde" }}
按照长度截取字符串,如果长度大于字符串,则返回整个字符串
- upper
{{ upper "abc" }}
把字符串中所有英文字母改成大写
- lower
{{ lower "ABC" }}
把字符串中所有英文字母改成小写
- title
{{ title "hello world" }}
把字符串中的英文单词改为首字母大写
- snakecase
{{ snakecase "FirstName" }}
把字符串中所有命名改成蛇形命名法
- camelcase
{{ camelcase "first_name" }}
把字符串中所有命名改成驼峰式命名法
- 一组默认值与空值函数
点击查看详情
- empty
{{ if empty .args }}empty{{else}}not empty{{end}}
检查变量是否是空值
- nonEmpty
{{ if nonEmpty .args }}not empty{{else}}empty{{end}}
检查变量是否不是空值
- coalesce
返回第一个非空的值,支持变长参数,常用于设置默认值
{{- $name := "" -}}
{{- $name = coalesce $name "没有名字" -}}
{{ $name }}
- ternary
三元运算符的语法糖,当第三个参数为true时返回第一个参数,否则返回第二个参数
{{ ternary "有参数" "没有参数" (nonEmpty .args)}}
- all
检查参数是否全部非空,支持变长参数
{{ if all "" 0 1}}all is not empty{{end}}
- any
检查参数是否有一个非空,支持变长参数
{{ if any "" 0 1}}someone is not empty{{end}}
- 一组list函数
点击查看详情
- list
{{ list "a" "b" "c" }}
创建一个list,返回创建的list
- append
向list末尾添加一个元素,返回新的list
{{ $old := list "a" "b" "c" }}
{{ $new := append $old "d" }}
- prepend
向list开头添加一个元素,返回新的list
{{ $old := list "a" "b" "c" }}
{{ $new := prepend $old "d" }}
- concat
连接一组list,支持变长参数,返回新的list
{{ $l1 := list "a" }}
{{ $l2 := list "b" }}
{{ $l3 := list "c" }}
{{ $new := concat $l1 $l2 $l3 }}
- 一组dict函数
点击查看详情
- dict
{{ dict "a" 1 "b" 2 "c" 3 }}
创建一个dict,其中key必须是字符串类型,返回创建的dict:
- get
从dict中获取值
{{ $d := dict "a" 1 "b" 2 "c" 3 }}
{{ $value := get $d "a" }}
- set
设置dict的值,其中key必须是字符串类型,返回dict
{{ $d := dict "a" 1 "b" 2 "c" 3 }}
{{ set $d "a" 100 }}
- unset
删除dict的值,返回dict
{{ $d := dict "a" 1 "b" 2 "c" 3 }}
{{ unset $d "a" }}
- hasKey
检查dict中是否有指定key
{{ $d := dict "a" 1 "b" 2 "c" 3 }}
{{ if hasKey $d "a" }}Yes.{{ end }}
- merge
合并dict,支持变长参数,不会覆盖已经存在的key,如果需要覆盖,请使用mergeOverwrite
返回合并后的dict
{{ $d1 := dict "a" 1 "b" 2 "c" 3 }}
{{ $d2 := dict "a" 2 "b" 3 "c" 4 }}
{{ $d3 := merge $d1 $d2 }}
- mergeOverwrite
合并dict,支持变长参数,会覆盖已经存在的key
返回合并后的dict
{{ $d1 := dict "a" 1 "b" 2 "c" 3 }}
{{ $d2 := dict "a" 2 "b" 3 "c" 4 }}
{{ $d3 := mergeOverwrite $d1 $d2 }}
- pick
从dict中取出指定的key创建新dict,支持变长参数,返回新创建的dict
{{ $d := dict "a" 1 "b" 2 "c" 3 }}
{{ $d2 := pick $d "a" "b" }}
- json处理
json处理使用 gjson 库实现,请参考对应文档。
{{- $data := `{"name":{"first":"Janet","last":"Prichard"},"age":47}` -}}
{{- $j := toGJson $data -}}
{{- $name := ($j.Get "name.first").String -}}
{{- $age := ($j.Get "age").Int -}}
Name is {{ $name }}.
Age is {{ $age }}.
- http请求
目前仅支持get / post 请求。
httpGet
用于发送get请求。
httpPostJson
用于发送json格式的post请求
httpPostForm
用于发送表单格式的post请求
三个函数的用法相同:
支持两个参数,第一个参数为url,第二个参数为请求参数(可选),请求参数的格式为dict,可使用dict创建。
{{/* 不带参数的httpGet */}}
{{- $j := httpGet "https://httpbin.sora233.me/get" | toGJson -}}
机器人的IP是:{{ coalesce ($j.Get "origin").String "获取失败" }}
{{/* 带参数的httpGet */}}
{{- $name := (member_info .group_code .member_code).name -}}
{{- $j := httpGet "https://httpbin.sora233.me/get" (dict "name" $name) | toGJson -}}
你好,{{ ($j.Get "args.name.0").String }}!
http请求的特殊参数
http请求存在一些特殊的保留参数,用来控制http行为,这些参数不会真正发送出去,当前支持:
- DDBOT_REQ_DEBUG
会详细输出本次http请求的细节(可能含有隐私信息,请注意不要随便复制给别人),用于DEBUG
- DDBOT_REQ_USER_AGENT
设置本次http请求的user_agent字段,大部分情况下不用设置,使用默认设置即可,默认值为:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
- DDBOT_REQ_HEADER
设置http请求的header,可以设置为list,每一项的格式为"A=B",表示设置header名字为A,值为B
- DDBOT_REQ_COOKIE (警告:不正确使用可能导致ccokie泄漏)
设置http请求的cookie,可以设置为list,每一项的格式为"A=B",表示设置cookie名字为A,值为B
- DDBOT_REQ_PROXY
用于控制请求代理,可以是:
prefer_mainland
使用mainland代理(要求已经配置proxy_pool)
prefer_oversea
使用oversea代理(要求已经配置proxy_pool)
prefer_none
不使用代理
prefer_any
随机选择mainland/oversea
直接的proxy地址(例如http://localhost:7890)
直接使用指定的代理
特殊参数的例子:
{{- /* 特殊参数的httpGet */ -}}
{{- $d := dict -}}
{{- /* 设置DDBOT_REQ_DEBUG,展示http 详细信息*/ -}}
{{- $d = set $d "DDBOT_REQ_DEBUG" "1" -}}
{{- /* 设置DDBOT_REQ_USER_AGENT,自定义USER_AGENT */ -}}
{{- $d = set $d "DDBOT_REQ_USER_AGENT" "DDBOT TEMPLATE 100%" -}}
{{- /* 设置DDBOT_REQ_HEADER,添加http自定义header */ -}}
{{- $d = set $d "DDBOT_REQ_HEADER" (list "FROM_DDBOT=yes") -}}
{{- /* 设置DDBOT_REQ_COOKIE,添加http自定义cookie */ -}}
{{- $d = set $d "DDBOT_REQ_COOKIE" (list "DDBOT_COOKIE=cookie_value") -}}
{{- /* 设置DDBOT_REQ_PROXY,不使用代理 */ -}}
{{- $d = set $d "DDBOT_REQ_PROXY" "prefer_none" -}}
{{- $_ := httpGet "https://httpbin.sora233.me/get" $d -}}
请查看命令行内的详细输出
以下为v1.0.9新增
- 发送戳一戳消息(只支持群聊)
戳一戳QQ号123456的用户
{{ poke 123456 }}
- 获取bot的qq号码
{{ bot_uin }}
- 设置命令冷却时间cooldown
cooldown设置后,设定时间内只有第一次会返回true,后续函数将返回false。
cooldown函数可以跨模板设置。
cooldown函数第一个参数为时间单位,支持如下简写,数字可以自由更换:
- 500ms(表示500毫秒)
- 1s(表示1秒钟)
- 20m(表示20分钟)
- 1.5h(表示1.5小时)
- 2h45m(表示2小时45分钟)
如果设置为0或者负数,将自动替换为5m(即5分钟)
cooldown函数的后续参数为设置cooldown的关键字,不同关键字的cooldown无任何关联,相同关键字的cooldown在时间范围内只能触发一次。
例子:
使用模板名作为关键字,实现单个模板所有人共享cooldown,不同模板独立cooldown:
{{- if (cooldown "10s" .template_name) -}}
成功
{{- else -}}
失败,正在冷却
{{- end -}}
把.member_code
加入关键字,实现每个人对每个模板有独立cooldown:
{{- if (cooldown "10s" .member_code .template_name) -}}
成功
{{- else -}}
失败,正在冷却
{{- end -}}
使用固定关键字,实现不同模板共享cooldown:
{{- if (cooldown "10s" "my_cooldown_keyword_1") -}}
成功
{{- else -}}
失败,正在冷却
{{- end -}}
- 读取本地文件
openFile
警告:该函数并不会对参数做安全检查,在任何情况下都绝对不要把用户输入作为函数参数。
返回值为[]byte
,例子:
{{ $data := openFile "path/myfile" }}
- 强制退出当前模板
abort
退出当前模板并且丢弃已经产生的内容,如果有参数,则会发送参数
例子:
{{- abort -}}
{{- abort "出现错误" -}}
{{- if eq 1 5 -}}
{{- abort (printf "出现错误: %v居然等于%v" 1 5) -}}
{{- end -}}
abort也支持图片参数
{{ abort (pic "https://i2.hdslb.com/bfs/face/0bd7082c8c9a14ef460e64d5f74ee439c16c0e88.jpg" ) }}
- 结束处理当前模板
fin
退出当前模板并且发送已经产生的内容,未被处理的模板代码将被跳过
这句话会输出
{{- fin -}}
这句话不会输出
命令通用模板变量:
模板变量 | 类型 | 含义 | 备注 |
---|---|---|---|
group_code | int | 本次命令触发的QQ群号码(私聊则为空) | |
group_name | string | 本次命令触发的QQ群名称(私聊则为空) | |
member_code | int | 本次命令触发的成员QQ号 | |
member_name | string | 本次命令触发的成员QQ名称 | |
cmd | string | 本次触发的命令名称 | 从v1.0.7版本开始支持 |
args | []string | 本次命令触发时附带的参数数组(只支持文字) | 从v1.0.7版本开始支持 |
at_targets | []int64 | 本次命令触发时附带的@成员的QQ号码 | 从v1.0.8版本开始支持 |
full_args | string | 本次命令触发时附带的完整参数(只支持文字) | 从v1.0.8版本开始支持 |
template_name | string | 本次命令触发时的模板名字 | 从v1.0.9版本开始支持 |
- /签到
模板名:command.group.checkin.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
success | bool | 表示本次签到是否成功,一天内只有第一次签到成功,后续签到失败 |
score | int | 表示目前拥有的签到分数 |
默认模板
{{ reply .msg }}{{if .success}}签到成功!获得1积分,当前积分为{{.score}}{{else}}明天再来吧,当前积分为{{.score}}{{end}}
- /help (私聊版)
模板名:command.private.help.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
无 |
默认模板
常见订阅用法:
以作者UID:97505为例
首先订阅直播信息:{{ prefix }}watch 97505
然后订阅动态信息:{{ prefix }}watch -t news 97505
由于通常动态内容较多,可以选择不推送转发的动态
{{ prefix }}config filter not_type 97505 转发
还可以选择开启直播推送时@全体成员:
{{ prefix }}config at_all 97505 on
以及开启下播推送:
{{ prefix }}config offline_notify 97505 on
BOT还支持更多功能,详细命令介绍请查看命令文档:
https://gitee.com/sora233/DDBOT/blob/master/EXAMPLE.md
使用时请把作者UID换成你需要的UID
当您完成所有配置后,可以使用{{ prefix }}silence命令,让bot专注于推送,在群内发言更少
{{- cut -}}
B站专栏介绍:https://www.bilibili.com/read/cv10602230
如果您有任何疑问或者建议,请反馈到唯一指定交流群:755612788
- /help (群聊版)
模板名:command.group.help.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
无 |
默认模板
DDBOT是一个多功能单推专用推送机器人,支持b站、斗鱼、油管、虎牙推送
- /lsp
模板名:command.group.lsp.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
无 |
默认模板
{{ reply .msg -}}
LSP竟然是你
- /ping(私聊)
模板名:command.private.ping.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
无 |
默认模板
pong
- b站直播推送
模板名:notify.group.bilibili.live.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
living | bool | 是否正在直播 |
name | string | 主播昵称 |
title | string | 直播标题 |
url | string | 直播间链接 |
cover | string | 直播间封面或者主播头像 |
默认模板
{{ if .living -}}
{{ .name }}正在直播【{{ .title }}】
{{ .url -}}
{{ pic .cover "[封面]" }}
{{- else -}}
{{ .name }}直播结束了
{{ pic .cover "[封面]" }}
{{- end -}}
- ACFUN站直播推送
模板名:notify.group.acfun.live.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
living | bool | 是否正在直播 |
name | string | 主播昵称 |
title | string | 直播标题 |
url | string | 直播间链接 |
cover | string | 直播间封面或者主播头像 |
默认模板
{{ if .living -}}
ACFUN-{{ .name }}正在直播【{{ .title }}】
{{ .url -}}
{{ pic .cover "[封面]" }}
{{- else -}}
ACFUN-{{ .name }}直播结束了
{{ pic .cover "[封面]" }}
{{- end -}}
- 斗鱼直播推送
模板名:notify.group.douyu.live.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
living | bool | 是否正在直播 |
name | string | 主播昵称 |
title | string | 直播标题 |
url | string | 直播间链接 |
cover | string | 直播间封面或者主播头像 |
默认模板
{{ if .living -}}
斗鱼-{{ .name }}正在直播【{{ .title }}】
{{ .url -}}
{{ pic .cover "[封面]" }}
{{- else -}}
斗鱼-{{ .name }}直播结束了
{{ pic .cover "[封面]" }}
{{- end -}}
- 虎牙直播推送
模板名:notify.group.huya.live.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
living | bool | 是否正在直播 |
name | string | 主播昵称 |
title | string | 直播标题 |
url | string | 直播间链接 |
cover | string | 直播间封面或者主播头像 |
默认模板
{{ if .living -}}
虎牙-{{ .name }}正在直播【{{ .title }}】
{{ .url -}}
{{ pic .cover "[封面]" }}
{{- else -}}
虎牙-{{ .name }}直播结束了
{{ pic .cover "[封面]" }}
{{- end -}}
- 有新成员加入群
模板名:trigger.group.member_in.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
group_code | int64 | 群号码 |
group_name | string | 群名称 |
member_code | int64 | 新加入的成员QQ号 |
member_name | string | 新加入的成员昵称 |
默认模板
该模板默认为空,即不发送消息
- 有成员退出群
模板名:trigger.group.member_out.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
group_code | int64 | 群号码 |
group_name | string | 群名称 |
member_code | int64 | 退出的成员QQ号 |
member_name | string | 退出的成员昵称 |
默认模板
该模板默认为空,即不发送消息
- bot添加新好友
模板名:trigger.private.new_friend_added.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
member_code | int64 | 添加的好友QQ号 |
member_name | string | 添加的好友QQ昵称 |
.command.HelpCommand | string | 帮助命令名称,默认是help |
默认模板
阁下的好友请求已通过,请使用<{{ prefix .command.HelpCommand }}>(不含括号)查看帮助,然后在群成员页面邀请bot加群(bot不会主动加群)。
- bot接受加群邀请
模板名:trigger.private.group_invited.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
group_code | int64 | 邀请加入的群号码 |
group_name | string | 邀请加入的群名称 |
member_code | int64 | 邀请人的QQ号 |
member_name | string | 邀请人的QQ昵称 |
默认模板
阁下的群邀请已通过,基于对阁下的信任,阁下已获得本bot在群【{{ .group_name }}】的控制权限,相信阁下不会滥用本bot。
以下为v1.0.9新增
- bot收到群戳一戳
模板名:trigger.group.poke.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
group_code | int64 | 发生戳一戳的群号码 |
group_name | string | 发生戳一戳的群名称 |
member_code | int64 | 发送戳一戳的用户QQ号 |
member_name | string | 发送戳一戳的用户QQ昵称 |
receiver_code | int64 | 被戳的用户QQ号 |
receiver_name | string | 被戳的用户QQ昵称 |
注意群内所有的戳一戳消息都会受到,如果只想处理bot被戳的消息,需要使用receiver_code
进行判断
默认模板
该模板默认为空,即不发送消息
- bot收到好友私聊戳一戳
模板名:trigger.private.poke.tmpl
模板变量 | 类型 | 含义 |
---|---|---|
member_code | int64 | 发送戳一戳的用户QQ号 |
member_name | string | 发送戳一戳的QQ昵称 |
默认模板
该模板默认为空,即不发送消息