$UserCommand
Материал из MyDC's Wiki
Команда протокола NMDC.
Синтаксис
$UserCommand {тип} {контекст} {детали}||
Направление команды
- Хаб ---> Клиент
Описание
Команда позволяет передать клиенту меню пользователя.
{тип} — положительное целое число, описывающее тип команды:
- 0 — разделитель;
- 1 — raw команда;
- 2 — raw команда с ограничением на единственный ник %[nick];
- 4 — URL команда (используется клиентом GreyLink для открытия ссылок при помощи браузера);
- 255 — очистка команд.
{контекст} — целое число, определяющее контекст, в котором показывать данное меню:
- 1 — Контекстное меню хаба (доступно по клику на вкладке хаба). Примеры: просмотр правил, смена пароля. Эта команда может содержать параметр %[nick]. Вместо этого следует использовать переменную %[mynick] или %[line:blah].
- 2 — Контекстное меню юзера (доступно по клику на любого юзера). Примеры: показ статистики юзера, проверка бана юзера. Эта команда может содержать переменные: %[nick], %[mynick] и %[line:blah].
- 4 — Контекстное меню поиска. Пример: сообщить о битом файле. Эта команда может содержать специфические аргументы ника и файла.
- 8 — Контекстное меню списка файлов. Пример: сообщение о найденном битом файле у юзера в списке файлов. Эта команда может содержать специфические аргументы ника и файла. Замечание: этот контекст является новым в DC++ 0.669.
{детали} — этот параметр зависит от параметра {тип}:
- {тип} = 0 (разделитель) и {тип} = 255 (очистка) не должны содержать параметра {детали}.
- {тип} = 1 (raw) использует в качестве деталей {заголовок}${команда}, где {заголовок} — это название менюшки. Менюшка может быть составной, то есть содержать подменюшки. Для построения подменюшки используется обратный слеш (\). Например, {меню}\{подменю}\{заголовок}. Степень вложенности подменюшек может быть любой.
Более высокие числа зарезервированы для дальнейшего использования.
Эскейп-последовательности
Если в меню используются знаки $, | и &, то их необходимо заменить на кодовые аналоги (аналоги html).
Как и все команды протокола NMDC, данная команда отделяется от других знаком |.
Контекст
Контекстное число — это бинарный флаг, который может быть составлен из других чисел, например, меню юзера и меню поиска вместе дадут (2 | 4 = 6). То есть для того, чтобы менюшка появилась в меню юзера и в меню поиска, следует указывать контекст равный шести.
Детали
Разделитель (вертикальная черта)
$UserCommand 0 {контекст} |
После {контекста} и перед символом | может находиться некий текст, который в любом случае будет игнорироваться.
Raw команды
$UserCommand 1 {контекст} {заголовок}${raw}||
Команда добавляет raw пункт меню с заголовком {заголовок} и raw командой {raw}. Эта команда должна оканчиваться на |, и если этого символа нет, то она отвергается.
Raw команда с ограничением на единственный ник
$UserCommand 2 {контекст} {заголовок}${raw}||
Тоже самое, что и в предыдущем случае, но эта команда работает одна на один ник. Это должно помешать использованию массовой рассылки.
Очистка меню
$UserCommand 255 {контекст} |
Команда стирает все менюшки из указанного контекста и ниже. То есть, например, 7 — сотрёт все менюшки с контекстами 1, 2 и 4.
Примеры
$UserCommand 2 6 Кик$$To: %[nick] From: %[mynick] $<%[mynick]> You are being kicked====|$Kick %[nick]||
Эта команда отсылает в приват сообщение "You are being kicked====" для ника и отправляет команду $Kick. Менюшки будут в поиске и меню юзера. Raw команда с ограничением на единственный ник не позволит сделать множественный кик.
$UserCommand 255 1 |
Команда удалить все менюшки из контекстного меню хаба (вкладка хаба).
На поддержку данной команды может указывать наличие характеристики UserCommand в команде $Supports. Однако, из-за большой распространённости данной команды, наличие этой характеристики в команде $Supports необязательно.