Если вы не используете API, который предоставляет вам эту информацию, протокол IRC не предоставляет никаких пользовательских модов в "идент @ vhost" в ответе 311 на WHOIS. IRC-боты, о которых я писал в прошлом, вы должны сами отслеживать подобные вещи. Хотя при отправке команды WHOIS <nick>
строка ответа 319
будет содержать список каналов, в которых находится ник, и символ @ / + /% / ~ перед каналами, указывающий пользовательские режимы, которые ник имеет в этом канале. Вы можете анализировать их, но это увеличит объем трафика, если вам придется отправлять WHOIS каждый раз, когда кто-то что-то делает в канале.
Когда вы впервые присоединитесь к каналу, вы получите группу 353 <your nick> @ <channel> :<user_list>
, где <user_list>
может быть:
: снежное облако Чиби-рю CUF Nere ~ thundra vatar nm449 | ноутбук Klapo Apocalypse + Skull_Leader% KagaminBot Разаекель Клоаси и Черри-чан @happytang MagusHrist% Frostii hexerr
Вы можете видеть модификаторы +
(голос), %
(полуоператор), @
(опера), ~
(владелец) перед каждым ником. Кроме того, если вы выдадите WHO <channel>
(в зависимости от сервера вам может потребоваться быть в канале, чтобы получить что-либо обратно), вы получите построчный ответ 352: 352 <your nick> <channel> <user> <host> <server> <nick> <H|G>[*][@|+|%|~] :<hopcount> <real name>
. И вы можете разобрать материал после H / G, чтобы получить пользовательские режимы.
Это единственный способ запрашивать пользовательские режимы, но пока ваш бот сидит в канале, он будет получать сообщения типа MODE <channel> +|-<v|h|a|o> <nick>
. Поэтому, когда вы видите один из них, вы можете внутренне отслеживать, кто получил + v, или -v и т. Д. Тогда вам не нужно будет отправлять команду на сервер каждый раз, когда кто-то в канале делает "! Roll" "(некоторые IRC-серверы будут пинать вас за флуд, если вы продолжаете отправлять WHOIS).