在 IRC 机器人 (Haskell) 中实现 CTCP 命令

Posted

技术标签:

【中文标题】在 IRC 机器人 (Haskell) 中实现 CTCP 命令【英文标题】:Implementing CTCP commands in an IRC bot (Haskell) 【发布时间】:2011-01-24 09:47:30 【问题描述】:

我已按照 Haskell wiki 上关于 implementing an IRC bot. 的教程进行操作,一切正常。但是一旦我开始扩展它,我意识到它需要响应其他用户对版本和 ping 等命令的 CTCP 请求。这些命令适用于服务器,但不适用于机器人。

我阅读了CTCP 和IRC clients 的rfc,但它们不是很有用。 我做了以下操作,但我认为这不是必需的消息:

write "PRIVMSG" (sender++"\001VERSION Haskellbot : v1.0 : GHCi\001")

这仅要求发件人提供版本信息。那么我该如何去实现 CTCP 请求和其他 CTCP 请求的返回消息呢?

【问题讨论】:

【参考方案1】:

在仔细检查 CTCP rfc 后,我解决了这个问题:

write "NOTICE" (sender++"\001VERSION Haskellbot : v1.0 : GHCi\001")

【讨论】:

另请注意,使用另一个 PRIVMSG 自动响应 PRIVMSG(并且完全自动响应 NOTICE)是违反协议的 - 这些规则旨在防止客户端之间的无限响应循环。跨度>

以上是关于在 IRC 机器人 (Haskell) 中实现 CTCP 命令的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Javascript 中实现 Haskell 的 FRP Behavior 类型?

在 Haskell 中实现 Smullyan 的算术鸟

在 Haskell 中实现一个高效的滑动窗口算法

在具有 O(1) 元素访问的 Haskell 中实现高效的拉链式数据结构

用 Java 构建一个 IRC 机器人

德摩根在 Haskell 中的定律通过 Curry-Howard 通信