对于 broadcast 的 content 参数,一对尖括号中包含的内容会被省略

问题描述
对于 ctx.broadcast(channels?, content) 的 content 参数,如果字符串包含一对尖括号,那么尖括号内包含的内容会被省略。

我不知道这是 Telegram 的特性还是 Koishi 的问题。

示例
如果 content 的值为 <aaa> aaa
那么广播到 Telegram 的文本内容为 aaa

环境
System:
OS: Windows 10 10.0.20348
CPU: (4) x64 Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz

Binaries:
Node: 18.16.1
Yarn: 4.1.0

Koishi:
Core: 4.17.2
Console: 5.28.0

3 个赞

这是因为koishi把尖括号和尖括号的内容当做消息元素进行处理,而<aaa>这个元素没有任何作用,它就消失了
只要从koishi导入h函数
import { h } from 'koishi'
然后把content用text方法包起来就可以了,像是这样
ctx.broadcast(channels, h.text(content))
这告诉koishi,content只是文本而已,并不包含消息元素
相关文档:

3 个赞

我的疑惑解决了,感谢大佬!

3 个赞

切神,谢谢你!(真的很有帮助,一直以来我都是避开使用<>符号滴,之后终于可以快快乐乐地使用他们啦!爱你)

2 个赞

You could also escape them manually using &lt; as < and &gt; as >.
Cannot recall the name? Just repeat the premiere letters from less than and greater than.

1 个赞

起作用且好记~

当场交作业:< >

谢谢你,MaikoTan!