2023-01-12 02:20:55 +08:00
# /$slash Bot
[@RongSlashBot]: https://github.com/Rongronggg9/SlashBot
[@hasutestbot]: https://t.me/hasutestbot
2023-02-13 23:42:55 +08:00
这个功能可以让你...唔,就像 [@RongSlashBot] 一样,能够有一个 *“响应诸如 ‘ /抱’、‘/摸摸’ 之类消息”* 的功能。
2023-01-12 02:20:55 +08:00
## 基础用法
< style >
.slb {
2023-01-29 10:53:09 +08:00
/* background-color: #f8f8f8 ; */
2023-01-12 02:20:55 +08:00
}
.slash {
color: palevioletred;
font-weight: bold;
}
.u1 {
2023-01-29 10:53:09 +08:00
color: lightcoral;
2023-01-12 02:20:55 +08:00
text-decoration: underline;
}
.u2 {
2023-01-29 10:53:09 +08:00
color: sandybrown;
2023-01-12 02:20:55 +08:00
text-decoration: underline;
}
2023-01-29 10:53:09 +08:00
.act { color: dodgerblue; }
.obj { color: mediumseagreen; }
2023-02-13 23:21:21 +08:00
.i { color: gray; background-color: gainsboro;}
2023-01-12 16:24:57 +08:00
.tq {
2023-01-29 10:53:09 +08:00
color: gray;
2023-01-12 16:24:57 +08:00
font-style: italic;
}
2023-01-12 02:20:55 +08:00
< / style >
2023-02-13 23:42:55 +08:00
很简单,只需要像以下一样输入 斜杠< code class = slash > /</ code > 加上 **一个单词** ,就可以实现基础的 **slash** 响应。
2023-01-12 02:20:55 +08:00
< pre > < code class = nohighlight > < span class = slash > /< / span > < span class = act > 摸摸< / span > < / code > < / pre >
这样子,**bot** 就会回应一句话以“描述你刚刚做了什么”。
2023-01-12 16:24:57 +08:00
< pre > < code class = nohighlight > < small class = tq > > < u > Morny Cono< / u > < / small >
< small class = tq > > in reply to < u > 安妮< / u > < / small >
2023-01-29 10:53:09 +08:00
< span class = u1 > 安妮< / span > < span class = act > 摸摸< / span > 了 < span class = u2 > 自己< / span > !< / code > < / pre >
2023-01-12 02:20:55 +08:00
**bot** 的**回应**中,带有< b > < u > 下划线< / u > < / b > 的部分会带有一个指向**某个人**的链接。一个**回应**会永远包括两个**人**。< code class = "slb u1" > 第一个< / code > 用户永远是发送斜杠消息的**你自己**。而**第二个人**:如果你在发送消息的时候**回复**了某个人,那么**第二个人**就是 < code class = "slb u2" > 你回复的人< / code > ;如果你**没有**回复任何人,那么**第二个人**将会是 < code class = "slb u2" > 自己< / code > —— 字面值的“自己”(当然指向的链接也是你的用户链接)。
> 每个人的**将会显示的名字**只会是它们的 **<ruby>名字<rt>First Name</rt></ruby>**,或者它们的 ***频道名***:
>
> 在 Telegram 新版,用户将可以在群组内使用频道身份发言;当然,也有群组可以链接频道,这时频道里的消息也会自动转发到群组内。不论是任何情况,有时候,**发言者**会是一个**频道**而非一个标准用户。**Morny** 实现了针对**频道发送的消息**,获取它的**发送者名称**和**发送者身份的链接**的功能。这时,这个人显示的**名字**将会是它的**频道的名字**~~,而指向它的**链接**将会是指向它的**频道的链接**~~。
>
> 然而,出于一些问题,指向频道的链接目前是损坏的。
>
> **指向一个用户的链接**使用的是用户的 **id** 而非 username <small>因此,只要是用户没有注销账号的情况下,链接将会长期有效</small>。这个链接也会产生 **@ 提醒**。
>
> <small id="todo-1">这一部分以后应该会单独拿出来写个页面的,虽然,写出来会挺“内部实现”相关的,谁知道呢。</small>
2023-01-12 16:24:57 +08:00
### 添加更多内容
也可以在**后面**再添加一个**空格**,通过以下的句式为动作和回应**添加更多的内容**。
< pre > < code class = nohighlight > < small class = tq > < in reply to < u > qwq< / u > < / small >
< span class = slash > /< / span > < span class = act > 摸摸< / span > < span class = obj > 头< / span >
< small class = tq > > < u > Morny Cono< / u > < / small >
< small class = tq > > in reply to < u > 安妮< / u > < / small >
2023-01-29 10:53:09 +08:00
< span class = u1 > 安妮< / span > < span class = act > 摸摸< / span > 了 < span class = u2 > qwq< / span > < span class = obj > 头< / span > !< / code > < / pre >
2023-01-12 16:24:57 +08:00
只要 **bot** 在句式中找到了**第一个空格**, **其后**的内容都会被认为是 < code class = "slb obj" > 附加信息</ code > ,而只有**第一个空格**之**前**的内容将会被认为是 < code class = "slb act" > 动作</ code > 。为了在 < code class = "slb act" > 动作</ code > 部分添加**空格**,你可以使用**单引号** < code class = "slb i" > '</ code > 或**双引号** < code class = "slb i" > "</ code > 包围住**动作部分**,这可以使得 **bot** 忽略掉引号内部的**空格**的断句功能,让空格可以被**包含**进 < code class = "slb act" > 动作</ code > 部分当中。
2023-02-13 23:21:21 +08:00
< pre > < code class = nohighlight > < small class = tq > < in reply to < u > Lapis Apple | ナイトコードで< / u > < / small >
< span class = slash > /< / span > < span class = i > "< span class = act > greatly thanks< / span > "< / span > < span class = obj > for supporting the Workshop< / span >
2023-01-12 16:24:57 +08:00
< small class = tq > > < u > Morny Cono< / u > < / small >
< small class = tq > > in reply to < u > 安妮< / u > < / small >
2023-02-13 23:21:21 +08:00
< span class = u1 > 安妮< / span > < span class = act > greatly thanks< / span > 了 < span class = u2 > Lapis Apple | ナイトコードで< / span > < span class = obj > for supporting the Workshop< / span > !< / code > < / pre >
2023-01-12 16:24:57 +08:00
## special: 特殊句式的忽略
为了规避一些很可能发生的意外触发< small > 因为斜杠 `/` 开头的句子还是会很常见很常见的</ small > , bot 会忽略一些特定的句式。
目前, bot 会忽略 < code class = "slb act" > 动作< / code > 部分符合 Telegram 命令格式,或者看起来很像是一个文件路径的句子。
> 关于 Telegram 命令格式:
>
> bot 判断一个命令是否是 telegram 命令,是通过判断这一部分是只有大小写字母,数字,以及下划线的格式,后面还可以有 `@` 加上一个用户名,也可以没有这一部分。简单来说,这个格式就是 telegram 客户端会自动高亮出的命令格式。如果这一部分完全符合这个格式,那么 bot 就认为这是一个命令,进而不进行 slash 回应。
>
> 对于那些想要更多细节的人,这是 bot 内部用于判断 `动作` 部分是否符合 Telegram 命令格式的 RegEx 表达式:
> <code class=regex>^\\w+(@\\w+)?$</code>
> 关于文件路径格式的判定:
>
> bot 用了相当偷懒的方案。只要 bot 在 `动作` 部分检测出了一个或多个正斜杠 `/`(排除掉 slash 开头本身就要求的一个),就会认为这是一个文件路径,就会不进行 slash 回应。
### 强制执行 slash 回应
很多时候,即使满足了上述的特殊句式,但其实还是想要 slash bot 进行回应。Morny 设计了一个方式,使得 bot 能够完全忽略特殊句式的情况执行 slash 回应。这个方式甚至能规避想要发送的< code class = "slb act" > 动作< / code > 和 Morny 本身的命令产生冲突的情况,能使得两个功能都可以正常执行。
使用方式很简单:在最开始的斜杠 < code class = "slb slash" > /< / code > 和 < code class = "slb act" > 动作< / code > 中间加一个 空格 就好了。
< pre > < code class = nohighlight > < small class = tq > < in reply to < u > qwq< / u > < / small >
< span class = slash > /< / span > < span class = act > pia< / span >
< small class = tq > > nothing will happens.< / small >
< small class = tq > < in reply to < u > qwq< / u > < / small >
< span class = slash > /< / span > < span class = act > pia< / span >
2023-02-13 23:21:21 +08:00
< small class = tq > > < u > Morny Cono< / u > < / small >
2023-01-12 16:24:57 +08:00
< small class = tq > > in reply to < u > 安妮< / u > < / small >
2023-01-29 10:53:09 +08:00
< span class = u1 > 安妮< / span > < span class = act > pia< / span > 了 < span class = u2 > qwq< / span > < / code > < / pre >
2023-01-12 16:24:57 +08:00
---
2023-01-12 02:20:55 +08:00
## 你知道吗
2023-01-12 16:24:57 +08:00
<!-- > 这一部分先等等,写完再发。 -->
2023-01-12 02:20:55 +08:00
2023-01-12 16:24:57 +08:00
这个功能现在的版本,细节方面是模仿 [@hasutestbot] 的实现形式的。旧版还有着更好玩的各种特殊处理和更加 *可能人性化/更智能* 的设计,不过后来感觉,弄得太复杂反而太失败了就还是研究成功的前辈的做法好了,所以有了现在的版本。
2023-01-12 02:20:55 +08:00
虽然其实模仿 [@hasutestbot] 模仿的相当糟糕,它的很多特殊处理其实都没有抄到。
2023-01-12 16:24:57 +08:00
~~然而最后,[@hasutestbot] 死< small > 于服务器忘记续费< / small > 了。~~