![irc 中的 Chanserv 和 /mode 命令有什么区别(freenode)](https://linux22.com/image/1568605/irc%20%E4%B8%AD%E7%9A%84%20Chanserv%20%E5%92%8C%20%2Fmode%20%E5%91%BD%E4%BB%A4%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%88freenode%EF%BC%89.png)
尽管我过去 5 年一直在使用 IRC,但我还是有点困惑,有 ChanServ 机器人,你可以使用它执行操作(ACL 更改),比如说,如果你想给某个用户授予创始人身份,你可以执行,/msg ChanServ #channel-foo-bar <nick> +F
但是为什么如果我们想禁止某人,我们会使用 ChanServ 并+b
针对某人进行设置,但我担心的是,为什么如果我们想为该人设置安静(即+q
),我们应该运行/mode #channel-foo-bar <nick> +q
。我以为 ChanServ 被用来控制每个人的 ACL 位,并被/mode
用来设置每个频道的选项,但看来我错了,为什么我们不能使用 ChanServ 设置标志+q
?
答案1
嗯,双方都安静下来和禁令实际上是通过 /mode (/mode +q
和/mode +b
)设置的。通过 ChanServ “授予”某人 +b 标志只是告诉它在被禁言的人返回时设置 +b 模式(以及将其踢出频道)。
使用和 ChanServ 的标志之间的主要区别/mode +b
在于后者是永久存储的(请参阅下面的完整解释)。
作为一项额外功能,ChanServ 允许您在禁令上添加注释和到期时间。虽然此功能无法通过 获得flags
,但您可以通过 访问此功能/msg chanserv akick
。频道运营商通常发现了解某人被禁止的原因和时间长短很有用 - 而不必为此保留共享的 google-doc。
背景:大多数 IRC 网络没有任何形式的持久存储。他们没有用户“账户”。所有频道都是临时的,它们的模式和禁令列表仅在频道有人时才保存在内存中。如果你获得 op 状态,它只会在你进入频道时持续 - 如果你离开或断开连接,有人将需要再次 /op 你。如果服务器重新启动,它会从零重新同步。如果整个网络重新启动后,所有状态都会丢失。(正如 2012 年底 EFnet 所发生的情况一样。)
(也有例外,但这是通常情况。)
服务机器人 (ChanServ) 在一个完全独立的程序中提供此存储,其行为非常类似于传统“机器人”或脚本客户端。您在 ChanServ 中设置的所有标志实际上不会直接影响网络 - 它们只是告诉 ChanServ 代表您设置一些 /modes。(如果您是频道操作员,您当然可以自己设置这些 /modes,它们只是暂时的。)
因此,当您在 freenode 上有 +o 或 +F 标志时,这不会改变您对频道的直接访问;它为您提供间接通过 ChanServ 访问。+o 标志是一个 ACL,它允许您向 ChanServ 请求/mode +o
自己。+F 标志是一个 ACL,它允许您将标志/ACL 提供给其他人。
为什么没有ChanServ 有一个 +q 标志来静音用户?嗯,它可以但目前还没有人实现这一点。
其中一个论点是,沉默往往是暂时的,并不真正需要存储在 ChanServ 中,而全面禁令往往是永久性的,可以更好地利用持久存储。
另一个原因是,服务软件被设计为与几种不同类型的 IRC 服务器配合使用,并处理所有自定义扩展。只有完全禁止才是 IRC 的标准部分 - 尽管 freenode 有静音(安静)模式+q
,但这是非标准的附加功能。
其他 IRC 服务器有不同的扩展。例如,更常见的意思是+q
“频道所有者”状态——这并不意味着 ChanServ 风格的所有者,而是实际上具有一些奖励的常规 chanop 访问权限。您可以在 Foonetic 或 Rizon 上看到这一点;而不仅仅是“op/voice/日工正常” 则有“owner/admin/op/halfop/voice/normal”。 (当然,静音/安静必须使用不同的字母。)
所以 freenode 的 ChanServ 没有+q
静音标志的主要原因是它已经使用相同的标志在其他网络类型中实现了“所有者”级别。
(有许多网络切换其基本服务器软件但保留相同的服务软件和帐户数据库的情况。发生这种情况时,您当然不希望服务将所有以前的“+q(频道所有者)”条目转换为“+q(静音)”条目...)