Я немного сбит с толку, несмотря на то, что я использую IRC в течение последних 5 лет, есть бот ChanServ, и вы можете выполнять операции (изменения ACL), используя его, например, если вы хотите присвоить статус основателя для пользователя, которого вы выполняете /msg ChanServ #channel-foo-bar <nick> +F
но зачем говорить, что если мы хотим запретить кому-либо, мы используем ChanServ и устанавливаем +b
для человека, но меня беспокоит то, почему, если мы хотим установить для него спокойствие ( что +q
) мы должны запустить /mode #channel-foo-bar <nick> +q
. Я думал, что ChanServ используется для управления битами ACL на человека, а /mode
используется для установки опций для каждого канала, но, похоже, я ошибался, почему, скажем, мы не можем установить флаг +q
с помощью ChanServ?
1 ответ
Ну, и тихие и запреты фактически устанавливаются через /mode (/mode +q
и /mode +b
соответственно). "Предоставление" кому-либо флага +b через ChanServ просто говорит ему установить режим +b всякий раз, когда забаненный человек возвращается (а также выбивать его из канала).
Основное различие между использованием /mode +b
и флагов ChanServ заключается в том, что последние хранятся постоянно (см. Полное объяснение ниже).
В качестве дополнительной функции, ChanServ позволяет вам ставить заметки и время истечения срока действия запретов. Хотя это не доступно через flags
, но вы можете получить доступ к этой функции через /msg chanserv akick
. Операторы каналов часто находят полезным узнать, почему кого-то забанили и на какой срок - без необходимости хранить общий Google-документ для этого.
Предыстория: большинство сетей IRC не имеют какого-либо постоянного хранилища. У них нет пользовательских учетных записей. Все каналы являются временными, их режимы и списки банов хранятся в памяти только до тех пор, пока на канале есть люди. Если вы получаете операционный статус, он действует только в то время, когда вы находитесь в канале - если вы уходите или отключаетесь, кому-то понадобится снова /op вас. Если сервер перезагружается, он повторно синхронизируется с нуля. Если вся сеть перезагружается, все состояние теряется. (Как это случилось с EFnet в конце 2012 года.)
(Есть исключения, но это обычный случай.)
Сервисные боты (ChanServ) предоставляют это хранилище в совершенно отдельной программе, действуя очень похоже на традиционного «бота» или просто на скриптовый клиент. Все флаги, которые вы устанавливаете в ChanServ, на самом деле не влияют на сеть напрямую - они просто говорят ChanServ установить некоторые / режимы от вашего имени. (Если вы оператор канала, вы, конечно, можете установить эти / режимы самостоятельно, они будут только временными.)
Поэтому, когда у вас есть флаги +o или +F на freenode, это не меняет ваш прямой доступ к каналу; это дает вам косвенный доступ через ChanServ. Флаг +o - это ACL, который позволяет вам запросить у ChanServ /mode +o
для себя. Флаг +F - это ACL, который позволяет передавать флаги /ACL другим.
Почему у ChanServ нет флага +q, чтобы отключить звук пользователей? Ну, это может, но никто еще не реализовал это.
Одним из аргументов является то, что приглушения часто бывают временными и их не нужно хранить в ChanServ, тогда как полные запреты часто бывают постоянными и лучше используют постоянное хранилище.
Другая причина заключается в том, что сервисное программное обеспечение написано для работы с несколькими различными типами IRC-серверов и манипулирования всеми их пользовательскими расширениями. Только полные запреты являются стандартной частью IRC - хотя у freenode есть немые (тихие) режимы +q
, это нестандартное дополнение.
Другие IRC-серверы имеют разные расширения. Например, гораздо более распространенное значение « +q
- это статус "владелец канала", который означает не владельца стиля ChanServ, а обычный доступ к chanop с некоторыми бонусами. Вы можете увидеть это на Foonetic или Rizon; вместо просто "оп / голос / поденщик нормальный "у вас есть" владелец / администратор / оп / halfop / голос / нормальный ". (Приглушенные / тихие, конечно, должны использовать другую букву.)
Поэтому основная причина, по которой ChanServ в freenode не имеет флага +q
для отключения звука, заключается в том, что он уже использует тот же флаг для реализации уровня «владелец» в этих других типах сети.
(Было много случаев, когда сеть переключала свое базовое серверное программное обеспечение, но сохраняла те же сервисные программы и базу данных учетных записей. Когда это происходит, вы, конечно, не хотите, чтобы службы конвертировали все предыдущие записи "+q (владелец канала)" в записи "+q (отключение звука)" ...)