使用 Twisted IRC 客户端

一个完整的操作指南将解释如何实际使用 IRC 客户端。但是,在该指南编写之前,这里有一个指南解释了如何进行 IRC 的文本格式化。

文本格式

Twisted Words 中的文本格式支持基于广泛使用的 mIRC 格式,该格式支持粗体、下划线、反向视频和彩色文本;嵌套这些属性也受支持。

创建格式化文本

用于在 IRC 客户端中创建格式化文本的 API 与 Twisted insults 使用的 API 几乎相同。文本属性是通过访问和索引特殊模块级属性 twisted.words.protocols.irc.attributes 上的属性来构建的,在索引属性时可以传递多个值以将文本与嵌套的文本属性混合。然后可以使用 twisted.words.protocols.irc.assembleFormattedText() 将生成的物体序列化为格式化文本,适用于任何 IRC 客户端消息传递功能。

粗体、下划线和反向视频属性

粗体、下划线和反向视频属性只是标志,是应用最简单的文本属性。它们分别通过 boldunderlinereverseVideo 名称在 twisted.words.protocols.irc.attributes 上访问。例如,向某人发送粗体和下划线文本“Hello world!”

from twisted.words.protocols.irc import assembleFormattedText, attributes as A

# Message "someone" the bold and underlined text "Hello world!"
anIRCClient.msg('someone', assembleFormattedText(
    A.bold[
        A.underline['Hello world!']])

“normal” 属性

乍一看,一个名为“normal”的文本属性,它不应用任何不寻常的文本属性,可能看起来并不那么特别,但它非常有用,既可以作为容器

A.normal[
    'This is normal text. ',
    A.bold['This is bold text! '],
    'Back to normal',
    A.underline['This is underlined text!']]

也可以作为一种方法,在不关闭和重新指定所有文本属性的情况下,暂时禁用文本属性以处理一小段文本

A.normal[
    A.reverseVideo['This is reverse, ', A.normal['except for this'], ', text']]

值得注意的是,组装后的文本将始终以禁用其他属性的控制代码开头,以确保正确性。

颜色属性

由于可以使用 IRC 文本格式为前景色和背景色指定颜色,因此引入了另一级属性访问。首先,通过 fgbg 属性名称分别访问前景色或背景色,然后访问颜色名称。可用的颜色属性名称为

  • 白色

  • 黑色

  • 蓝色

  • 绿色

  • 浅红色

  • 红色

  • 洋红色

  • 橙色

  • 黄色

  • 浅绿色

  • 青色

  • 浅青色

  • 浅蓝色

  • 浅洋红色

  • 灰色

  • 浅灰色

可以嵌套前景色和背景色以更改单个文本的两种颜色。例如,要显示绿色文本上的黑色

A.fg.black[A.bg.green['Like a terminal!']]

解析格式化文本

大多数 IRC 客户端都格式化文本,因此您可能希望解析此格式化文本是合乎逻辑的。 twisted.words.protocols.irc.parseFormattedText() 将文本解析为结构化的文本属性。值得注意的是,虽然将 parseFormattedText 的输出反馈给 assembleFormattedText 将产生相同的最终结果,但解析文本的实际结构将有所不同。颜色代码从 0 映射到 15,大于 15 的代码将开始循环。

删除格式

在某些情况下,例如处理来自 IRC 的用户输入的自动机,需要从文本中删除所有格式。这可以通过 twisted.words.protocols.irc.stripFormatting() 来完成。