morny-book/executor/admin-msg-send.md
2022-12-05 00:08:51 +08:00

70 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# morny 操作工具: 消息发送器
<font color=palevioletred markdown=1>
**此工具仅限 [可信成员](../trusted) 使用**
这是一个管理类工具,同时它可能会对其它 morny 使用者产生骚扰
这个工具的产生是为了测试使用和内部的特殊用途
因此,这个工具并不开放对所有使用者使用
</font>
通过在私聊中使用 __`*msg` 工具__可以控制 coeur 向任意morny 有权限发送消息的)对象发送消息。
目前还仅支持文本消息的发送(但是也是支持富文本的)。
其通过以下的步骤使用:
## 定义消息发送资讯
**在私聊中**,使用一条以 `*msg` 开头的消息来**定义**一个要发送的消息和相关咨询,这条以 `*msg` 开头的消息称之为一条 *定义*
**第一行**是消息发送资讯的元数据,它一定以 `*msg` 作为开头,包含它要发送的对象也可以添加一些特殊选项。
**从第二行开始直到整个定义的结束**,都会被解析为要发送的消息体,这一部分将会最终被 coeur 以 morny 身份发送给定义的对象。
一条定义也可以没有第二行(即发送的消息体为空)。如果是这样,那么这条定义将不会是可以被发送的定义——但仍然可以触发检查。这在想要检查一个 id 但是并没有什么实际要发送的东西的时候很好用。
发送出这条消息并**不会实际执行发送**,而是 morny 会输出这条定义的相关资讯可以让操作者进行检查。所以,你也可以反复使用定义来检查与调整自己想要发送的信息。
### 定义发送目标
在定义行使用 <code>\*msg<font color=skyblue><i>target_id</i></font></code> 格式,<code><font color=skyblue><i>target_id</i></font></code> 可以是群组,用户,或者频道的 id——但是需要遵循 telegram bot api 规范,同时,依据 api 规范也只能使用 morny 有权限访问的对象。
发送目标是必须的,如果一条定义消息不填入发送目标,那么它将会解析失败,最终返回 404。
### 使用富文本
对于富文本,**morny 原生支援消息内容中的原生富文本格式**。在定义中的消息体部分的原生富文本格式将能够被保留以及按照原样被发送出去。
不过 \*msg 工具也支援使用纯文本+文本格式的方式来使用富文本:第一行 <code>\*msg<font color=skyblue><i>target_id</i></font></code> 后面可以添加参数来使用受 telegram api 支援的解析格式,例如 <code>\*msg<font color=skyblue><i>target_id</i></font><font color=mediumseagreen>\*html</font></code>:这将会把要发送的消息*文本*使用 telegram 的 HTML 解析器解析为富文本格式。
目前支持的解析器有<small>详情还请参阅 [telegram ParseMode 文档][tg-parse]</small>
- <code><font color=mediumseagreen>markdown</font></code> <code><font color=mediumseagreen>md</font></code> <code><font color=mediumseagreen>m↓</font></code> [telegram MarkdownV2][tg-md2]: 更加接近于真实的 markdown 使用,同时也有相当多的转义需要
- <code><font color=mediumseagreen>md1</font></code> [telegram markdown v1/classic][tg-md]: 一种相当简单的 markdown 格式,虽然功能欠缺很多,不过相比 v2 使用会简单很多
- <code><font color=mediumseagreen>html</font></code> [telegram html][tg-html]: 基于 html 语法,除了语句繁琐之外,只需要注意很少的转义就能写出很复杂的格式
[tg-parse]: https://core.telegram.org/bots/api#formatting-options
[tg-md2]: https://core.telegram.org/bots/api#markdownv2-style
[tg-md]: https://core.telegram.org/bots/api#html-style
[tg-html]: https://core.telegram.org/bots/api#markdownv-style
解析器和原生富文本格式能够同时作用。虽然最好还是只使用其中一种,两种不同的富文本格式加和在一起或许会产生难以猜测的行为——无论如何,这会在 telegram api 内部决定。
### bot 的回执
**<font color=orange>// TODO</font>**
### 重新检查一个已有的消息发送资讯
在和 morny 的私聊中,如果已经有了一个消息发送资讯,直接对那条定义消息回复单字 `*msg`,即可让 morny 重新进行一遍定义检查并返回回执。
## 执行发送
**向刚刚定义好了的 `*msg` 消息发送资讯定义回复 `*msgsend`**(不是向 bot 的回执发送而是向你自己的以 `*msg` 开头的那条消息发送),即可正式让 coeur 发送这个定义所定义的消息。
如果成功,将会回复一个发送成功的信号。
如果失败,将会返回在 telegram api 中发送失败的相关信息。