Skip to content

Latest commit

 

History

History
398 lines (269 loc) · 10.2 KB

TEMPLATE.md

File metadata and controls

398 lines (269 loc) · 10.2 KB

DDBOT 模板介绍

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新增的模板函数

  • {{- cut -}}

用于发送分段消息,上面已介绍过

  • {{ reply .msg }}

用于回复消息,上面已介绍过

  • {{ prefix }}

引用配置中的command prefix,默认为/

  • {{ pic "图片地址" }}

用于发送图片,支持http/https链接,以及本地路径。

如果路径是一个文件夹,则会在文件夹内随机选择一张图片。

  • {{ roll a b }}

在a ~ b范围内中随机一个数字,a b 返回值均为int64类型。

  • {{ choose "a" "b" "c" }}

从传入的参数中随机返回一个,参数类型为string,支持变长参数。

当前支持的命令模板

  • /签到

模板名: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竟然是你

当前支持的推送模板

  • 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 }}直播结束了
{{- 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 -}}
{{ .name }}直播结束了
{{- 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 }}直播结束了
{{- 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 }}直播结束了
{{- 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 退出的成员昵称
默认模板

该模板默认为空,即不发送消息