TgDev боты на новом движке

Я разрабатываю новый движок для моих ботов, который будет позволять использовать функционал ботов с множеством API токенов. В частности пользователи смогут запускать моих ботов на своих API токенах. В настоящий момент происходит постепенный процесс перевода TgDev ботов на новый движок.

Далее следует список существующих TgDev ботов, уже перешедших на новый движок.

Ранее каждый бот из этого списка выполнял свою отдельную задачу. Теперь каждый из этих ботов обладает суммарным фунционалом всех ботов из списка. Если у вас в чате были установлены несколько ботов из списка, вам нужно оставить только один бот! Иначе боты будут писать одинаковые информационные сообщения т.к. один и тот же модуль будет выполнять свою задачу в каждом из этих ботов.

ВНИМАНИЕ! Боты, перешедшие на новый движок, не имеют веб-интерфейса для управления. Если ранее вы управляли этими ботами через сайт tgdev.io, то сейчас такой возможности временно нет.

Содержимое документации

Установка бота в чат

Следуйте этим шагам:

  • Добавьте бота (см. список выше) в ваш чат.
  • Дайте боту разрешение на удаление сообщений, на бан пользователей и на закрепление сообщений. Никаких других разрешений не требуется.
  • Активируйте нужные модули. По-умолчанию, в новом чате большинство модулей неактивны.

Основные принципы работы с ботом

  • Для настройки бота в конкретной группе вам нужно писать команды бота непосредственнов в эту группу, либо же выбрать активный чат в личной переписке с ботом и слать команды боту в личку. Подробнее смотрите раздел способы управления ботом.
  • Ботом может управлять любой администратор чата
  • Бот не удаляет сообщения администраторов. Если вы хотите протестировать, как бот удаляет сообщения, вам нужно писать сообщения от обычного пользователя, не являющегося администратором чата.

Бот автоматически определяет новых администраторов. Вы можете проверить, считает ли вас бот администратором, с помощью команды /tgdev check. Если по какой-то причине бот не распознаёт пользователя как администратора, используйте команду /tgdev reload_admins, чтобы принудительно обновить список всех администраторов.

Основные причины, почему бот может не работать

Если бот "не работает" (что бы это ни значило) в вашем чате, используйте следующую последовательность действий, чтобы проанализировать ситуацию:

  • Во-первых, не нужно тестировать удаление сообщений через аккаунт администратора чата. Даже правильно настроенный модель не будет удалять сообщения, написанные администратором. Вам нужно тестировать удаление сообщений аккаунтом, не имеющим прав администратора.
  • Далее проверьте, что вы не забирали у бота право писать в чат, если вы это сделали, то бот ничего вам не сможет сказать, даже если захочет
  • Далее проверьте командой /tgdev check, что у вас есть право управления ботом. Возможно, вам нужно будет перезагрузить список администраторов. Подробности читайте в разделе "Основные принципы работы с ботом".
  • Далее проверьте, что в выводе команды /tgdev check написано, что у бота есть нужные права администратора. Например, если у бота нет права на удаление сообщение, то удалять сообщения у бота не получится.
  • Далее проверьте, что у нужного вам модуля включена настройка "active". Даже правильно настроенный модуль не будет ничего делать, если он отлючен через эту настройку. По-умолчанию, все модули отключены! Кроме того, например, модуль grep автоматически сам не включится, после того как вы добавите слова в список запрещённых слова. Вам нужно будет явно включить модуль.

Способы управления ботом

Первый способ: вводить команды в группу, где установлен бот. Удобство в том, что если у вас открыта нужная группа в телеграм клиенте, вы можете очень быстро произвести нужную настройку. Недостаток в том, что если нужно делать много настроек, то это будет мешать беседе других участников группы, а также в том, что другие будут видеть ваши настройки.

Второй способ: вводить команды в личку боту. Команды нужно вводить самые обычные. Но предварительно нужно выбрать группу, к которой эти команды будут применяться. При вводе команд управления ботом в личку боту, результат каждой команды будет содержать название выбранной группы. Таким образом вы вседа будете понимать, какая группа сейчас является активной.

Команды выбора группы в личке:

  • /tgdev select ИД - выбрать группу, к которой будут применяться команды, введённые в личку боту. Тут ИД - это числовой идентификатор группы.
  • /tgdev select - если написать команду select без параметров, то она отобразит кнопку для выбора чатов. При нажатии на кнопку отроется список чатов, в котором можно выбрать нужный чат.
  • /tgdev deselect - сбросить активную группу. После вызова этой команды, попытки введения команд настройки бота в личку бота будут приводить к показу сообщения, что активная группа не выбрана.

Общие команды для управления любым модулем

Каждый модуль обладает базовыми функциями, одинаковыми для любого модуля, например, возможность включить или отключить модуль, или возможность включить или отключить уведомления при удалении сообщений. В этом разделе перечислены команды для управления такими функциями, эти команды применимы к любому модулю.

В командах присутствует слово МОДУЛЬ. Для использования команды, вам нужно заменить слово МОДУЛЬ на имя конкретного модуля, который вы настраиваете.

Команды, общие для всех модулей:

  • /tgdev/МОДУЛЬ config - отобразить конфигурацию модуля
  • /tgdev/МОДУЛЬ set active yes - включить работу этого модуля
  • /tgdev/МОДУЛЬ set active no - отключить работу этого модуля
  • /tgdev/МОДУЛЬ set notification yes - включить посылку информационных сообщений модуля с объяснением, почему сообщение пользователя было удалено
  • /tgdev/МОДУЛЬ set notification no - выключить посылку информационных сообщений модуля с объяснением, почему сообщение пользователя было удалено

Команды для управления списками любого модуля

Многие модули обладают настройками в виде списка. Чаще всего это списки для запрещённых слов или для запрещённых регулярных выражений. Настройки в виде списка настраиваются одинаковыми командами, различающимися только именем модуля и именем списка.

Например, команда для добавления слова "смс" в список запрещённых слов модуля grep выглядит так: /tgdev/grep add word смс. Здесь имя модуля -- это "grep", а имя списка -- это "word".

Далее следует список команд для управления любым списком любого модуля. При использовании команды вам нужно заменить МОДУЛЬ на имя настраиваемого модуля, а СПИСОК на имя настраиваемого списка. В документации по каждому модулю представлены списки, которые вы можете настраивать.

Команды для управления списками:

  • /tgdev/МОДУЛЬ add СПИСОК СЛОВО - добавить слово в список. Вместо СЛОВО вам нужно использовать конкретное слово, которое вы хотите добавить в писок.
  • /tgdev/МОДУЛЬ remove СПИСОК СЛОВО - удалить слово из списка запрещённых слов. Вместо СЛОВО вам нужно использовать конкретное слово, которое вы хотите добавить в писок.
  • /tgdev/МОДУЛЬ dump СПИСОК - отобразить содержимое списка в виде многострочного текста. Каждый элемент списка будет отображён на отдельной строке.
  • /tgdev/МОДУЛЬ clear СПИСОК - очистить содержимое списка. После выполнения команды все элементы списка будут удалены.

Вы можете добавить сразу несколько значений в любую настройку, содержащую список значений. Для этого вам нужно использовать ту же самую команду, как для добавления одного значения, но указать каждое следующее значение на отдельной строке. Пример такой команды следует далее. Обратите внимание, это одна команда, состоящая из нескольких строк. После каждого значения идёт перенос строки:

/tgdev/grep add word магазин
гастроном
универсам

Аналогичным образом можно удалять из списка множество значений с помощью команды remove.

Диагностические команды

  • /tgdev check - проверить правильность установки бота
  • /tgdev config - отобразить конфигурацию всех модулей
  • /tgdev reload_admins - обновить список администраторов чата. Обычно эта команда не нужна т.к. в большинстве случаев бот автоматически определяет, что участник группы стал администратором, или что у участника группы забрали права администратора.

Белый список каналов

Если канал (или чат) находятся в белом списке, все модули бота будут пропускать сообщения этого канала. Эта настройка нужна в двух случаях:

  • вам нужно разрешить пользователям пересылать в чат сообщения из доверенного источника
  • вам нужно разрешить сообщения, написанные от лица доверенного канала

Естественно, настраивать белый список каналов имеет смысл только, если какие-то фильтры модуля препятствуют появлению сообщений из нужных каналов.

Задание настроек времени

Все настройки времени в боте задаются в формате "ЧЧ:ММ", где ЧЧ - это часы, а ММ - минуты. Нужно использовать двузначные числа, например, пять минут первого надо задавать в формате "00:05".

Все настройки времени бота в конкретном чате обрабатываются с учётом часовой зоны этого чата. По умолчанию используется часовая зона с нулевым смещением относительно нулевого мередиана. Если, например, основная аудитория группы находится Ленинграде т.е. в часовой зоне, имеющей смещение, равное трём часам, то нужно задать соответствующую часовую зону в настройках этого чата командой /tgdev/system set time_zone 03:00.

Некоторые модули бота удаляют сообщения по факту наличия в них ссылок на веб-сайты. Вы можете добавлять доменные имена в белый список ссылок для того, чтобы разрешать такие ссылки т.е. предотвращаь их удаление модуля бота.

Модули бота, на которые влияет белый список ссылок:

  • модуль sandbox в режиме обработки карантина safe_hours

Команды для изменения белого списка ссылок вы можете найти в описании моделя system.

Сохранение в файл и загрузка из файла конфигурации чата

Конфигурацию модулей любого чата можно сохранить в файл. Можно сохранять как настройки всех модулей, так и настройки явно выбранных модулей. Далее файл настроек можно использовать для восстановления настроек в чата или для применения этих настроек к другому чату. Работать с файлами настроек можно только через личные сообщения с ботом.

Команды работы с файлом настроек:

  • /tgdev/config export - сохранить настройки всех модулей в файл.
  • /tgdev/config export МОДУЛИ - сохранить настройки выбранных модулей в файл. Здесь МОДУЛИ означает список имён модулей, указанных через запятую. Пример команды: /tgdev/config export mute,grep
  • /tgdev/config import - применить файл настроек к чату. Эту команду нужно вводит в ответе на сообщение, содержащее файл настроек. Файл настроек НЕ применяется к чату выбранному командой /tgdev select. Вам будет предложено явно выбрать чат, к которому должны быть применены настройки из файла.

При желании вы можете вручную отредактировать файл настроек в текстовом редакторе. А затем применить настройки из этого файла к нужному чату.

В файле настроек содержится информация о дате создания файла, а также о чате, из которого были экспортированы настройки. Эта информация не влияет на процесс импортирования настроек этого файла т.к. вы явным образом выбираете чат для применения настроек из файла.

Особенности работы с регулярными выражениями

В некоторых модулях можно использовать пользовательские регулярный выражения. Например, в модуле grep можно добавлять рег. выражения в список "regex". Для работы с регулярными выражениями используется rust библиотека regex. Ссылка на её документацию: docs.rs/regex/latest/regex/

Проверять, как работает регулярное выражение, удобно на сайте regex101.com. Не забудьте выбрать в меню слева "Rust" в списке движков для обработки регулярных выражений.

Важные вещи, которые нужно знать:

  • при обработке регулярных выражений регистра букв не имеет значения
  • символы ^ и $ совпадают с началом и концом строк в многострочном тексте
  • символ . совпадает в том числе с переносом строки
  • look-around запросы не поддерживаются т.е. (?=...), (?!...), (?<=...) и (?<!..)
  • backreference запросы не поддерживаются т.е. \1, \2 и т.д.

Уведомления об удалённых сообщениях

Каждый активный модуль, по-умолчанию, отправляет в чат уведомление при удалении сообщения пользователя. В уведомлении написана причина, по которой было удалено сообщение. Уведомления любого модуля можно отключить с помощью настройки модуля "notification". Уведомления автоматически удаляются через пять минут.

Во избежание засорения чата однотипными сообщениями, повторные уведомления того же модуля об удалении сообщений того же пользователя не публикуются в чат, если с момента отправки предыдущего уведомления прошло менее минуты. Другими словами, если в течении минуты модуль удалил десять сообщений пользователя, то в чат будет послано только одно уведомление, в момент удаления первого сообщения пользователя.

Текст каждого уведомления содержит в конце символы "(???)", являющиеся ссылкой на информационную страницу сайта tgdev.io, содержащую подбробности об удалённом сообщении. Такую информационную страницу удобно использовать для следующих задач:

  1. Администратор чата может ознакомиться с содержимом удалённого сообщения, чтобы расширить свой кругозор, или, например, понять, что нужно по-другому настроить модули бота.
  2. Пользователь, чьё сообщение было удалено, может скопировать часть сообщения с информационной страницы, чтобы не набирать его заново.

Информационная страница об удалённом сообщении доступна в течении 24 часов с момента удаления сообщения.

Модуль system

В системном модуле находятся настройки, влияющие на работу всех модулей.

Команды модуля system:

  • /tgdev/system config - отобразить конфигурацию системного модуля
  • /tgdev/system set time_zone ЗОНА - задать часовую зону чата, значение ЗОНА задаётся в виде "ЧЧ:ММ" или "-ЧЧ:ММ", если часовая зона имеет отрицательное смещение. Обязательно прочитайте раздел "Задание временных настроек", перед настройкой бота. Пример команды для задания часовой зоны для Москвы: /tgdev/system set time_zone 03:00.
  • /tgdev/system set lang ЯЗЫК - установить язык сообщений бота, где ЯЗЫК - это двухбуквенный код языка. В данное время поддерживаются следующие языки: ru - русский, en - английский. Пример команды для включения русского языка сообщений бота: /tgdev/system set lang ru.
  • /tgdev/system add user_whitelist ИД - добавить пользователя в системный белый список. Здесь ИД - это числовой идентификатор телеграм пользователя. Если пользователь находится в системном белом списке, то все модули бота будут пропускать сообщения пользователя т.е. не будут их удалять.
  • /tgdev/system remove user_whitelist ИД - удалить пользователя из системного белого списка. Здесь ИД - это числовой идентификатор телеграм пользователя.
  • /tgdev/system add channel_whitelist ИД - добавить чат или канал в белый список. Здесь ИД - это числовой идентификатор канала. Подробнее о белом списке каналов читайте в разделе "Белый список каналов"
  • /tgdev/system remove channel_whitelist ИД - удалить чат или канал из белого списка. Здесь ИД - это числовой идентификатор канала.
  • /tgdev/system add hostname_whitelist ИМЯ - добавить доменной имя в белый список ссылок, здесь ИМЯ - это имя домена. Пример команды для разрешения ссылок на сайт yandex.ru /tgdev/system add hostname_whitelist yandex.ru. Кроме разрешения отдельных доменов, вы можете разрешить ссылки в доменной зоне. Например, команда для разрешения ссылок на любые домены в зоне ".ru" /tgdev/system add hostname_whitelst ru
  • /tgdev/system remove hostname_whitelist ИМЯ - удалить доменное имя из белого списка ссылок, здесь ИМЯ - это имя домена. Пример: /tgdev/system remove hostname_whitelist yandex.ru

Модуль grep

Модуль grep позволяет удалять сообщения, содержащие слова из списка запрещённых слов. Список запрещённых слов вам нужно заполнить самим.

В модуле grep есть два списка:

  • список word содержит запрещённые слова (или фразы), которые ищутся в тексте сообщения. Слова (или фразы) ищутся именно в том виде, как они записаны в списке. Регистр букв не учитывается. Засчитывается только полное совпадение запрещённого слова (или фразы) со словом (фразой) в тексте. Например, если запрещено слово "бесплатно", то будет удалено сообщение "скачать видео бесплатно", но не будет удалено сообщение "бесплатный сеанс магии". Вы можете использовать целые фразы: сообщение будет удалено, если текст сообщения будет содержать фразу и края фразы будут совпадать с краями слов в тексте. Например, если запрещена фраза "качать бесплатно", то будет удалено сообщение "Вы можете качать бесплатно воду", но не будет удалено сообщение "Вы можете скачать бесплатно воду".
  • список regex содержит регулярные выражения. Если вы не знаете, что это такое, то скорее всего оно вам не нужно. Для работы с регулярными выражениями на данный момент времени модуль grep использует rust библиотеку regex. Обязательно прочтите раздел документации "Особенности работы с регулярными выражениями".

В каждом списке может содержаться не более 300 элементов.

Команды модуля grep:

  • /tgdev/grep config - отобразить конфигурацию grep модуля
  • /tgdev/grep set active yes - включить работу модуля grep в чате
  • /tgdev/grep set active no - отключить работу модуля grep в чате
  • /tgdev/grep set notification yes - включить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/grep set notification no - выключить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/grep add word СЛОВО - добавить слово в список запрещённых слов. Не нужно писать в команде именно текст "СЛОВО". Нужно писать именно то слово, которое вы хотите запретить :)
  • /tgdev/grep remove word СЛОВО - удалить слово из списка запрещённых слов
  • /tgdev/grep add regex ВЫРАЖЕНИЕ - добавить регулярное выражение в список запрещённых регулярных выражений. Если вы не знаете, что такое регулярные выражение, оно вам не надо! Максимально допустимая длина выражения - 255 символов.
  • /tgdev/grep remove regex ВЫРАЖЕНИЕ - удалить ВЫРАЖЕНИЕ из списка запрещённых регулярных выражений
  • /tgdev/grep analyze ТЕКСТ - найти все слова и регулярные выражения, которые совпадают с текстом. Здесь ТЕКСТ - это произвольный текст, который может в том числе содержать переводы строк.

Вы можете добавлять или удалять из списка сразу несколько значений. Подробнее вы можете узнать об этом в разделе документации "Управление настройками, содержащими список значений".

Модуль langblock

Модуль langblock позволяет удалять сообщения, написанные на запрещённом языке. Также есть возможность удалять сообщения, содержащие символ из запрещённого алфавита.

Для добавления языка в запрещённый список, вам нужно использовать код языка. Узнать код языка можно с помощью команды /tgdev/langblock analyze, указав её в ответе на анализируемое сообщение. Бот определит язык сообщения и покажет вам код языка. Также эта команда покажет вам наличие символов тех алфавитов, которые позволяет блокировать модуль langblock.

На данный момент модуль langblock позволяет блокировать следующие алфавиты:

  • arabic - символы арабского алфавита, буквы которого используются в арабском, иранском и других языках Востока.
  • cjk - иероглифы, использующиеся в китайском, японском, корейском и других языках юго-восточной Азии.

Команды модуля langblock:

  • /tgdev/langblock config - отобразить конфигурацию langblock модуля
  • /tgdev/langblock set active yes - включить работу модуля langblock в чате
  • /tgdev/langblock set active no - отключить работу модуля langblock в чате
  • /tgdev/langblock set notification yes - включить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/langblock set notification no - выключить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/langblock add lang ЯЗЫКА - добавить язык в список запрещённых языков, здесь ЯЗЫК - это код языка. Узнать код языка можно с помощью команды /tgdev/langblock analyze, указав её в ответе на анализируемое сообщение.
  • /tgdev/langblock remove lang ЯЗЫКА - удалить язык из списка запрещённых языков, здесь ЯЗЫК - это код языка
  • /tgdev/langblock add script АЛФАВИТ - добавить алфавит в список запрещённых алфавитов, здесь АЛФАВИТ - это код алфавита. Смотрите выше список поддерживаемых алфавитов.
  • /tgdev/langblock remove script АЛФАВИТ - удалить алфавит из списка запрещённых алфавитов, здесь АЛФАВИт - это код алфавита.

Модуль mute

Модуль mute позволяет автоматически удалять любые сообщения, отправляемые пользователями в чат. Режим удаления сообщений можно включать как вручную, так и автоматически в заданный период времени.

Команды модуля mute:

  • /tgdev/mute config - отобразить конфигурацию mute модуля
  • /tgdev/mute set active yes - включить работу модуля mute в чате
  • /tgdev/mute set active no - отключить работу модуля mute в чате
  • /tgdev/mute set notification yes - включить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/mute set notification no - выключить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/mute enable all - включить режим удаления всех сообщений
  • /tgdev/mute disable all - выключить режим удаления всех сообщений
  • /tgdev/mute enable period - включить режим удаления сообщений в заданный период
  • /tgdev/mute disable period - выключить режим удаления сообщений в заданный период
  • /tgdev/mute set period_start ВРЕМЯ - задать начало периода удаления сообщений, время задаётся в формате "ЧЧ:ММ", где ЧЧ - это часы, а ММ - минуты. Обязательно прочитайте раздел "Задание временных настроек", перед настройкой бота. Пример полной команды для задания начала периода на три часа ночи: /tgdev/mute set period_start 03:00.
  • /tgdev/mute set period_end ВРЕМЯ - задать конец периода удаления сообщений, время задаётся в формате "ЧЧ:ММ", где ЧЧ - это часы, а ММ - минуты. Обязательно прочитайте раздел "Задание временных настроек", перед настройкой бота. Пример полной команды для задания конца периода на четыре часа ночи: /tgdev/mute set period_end 04:00.
  • /tgdev/mute add user_whitelist ИД - добавить пользователя в белый список модуля. Здесь ИД - это числовой идентификатор телеграм пользователя. Если пользователь находится в белом списке модуля, то модуль будет пропускать сообщения пользователя т.е. не будет их удалять.
  • /tgdev/mute remove user_whitelist ИД - удалить пользователя из белого списка модуля. Здесь ИД - это числовой идентификатор телеграм пользователя.

Модуль nopig

Модуль nopig позволяет удалять сообщения, содержащие ругательства. С помощью настройки "filter" можно включать и отключать различные фильтры ругательств.

Список фильтров ругательств:

  • ru-mat - фильтр содержит все слова русского языка, образованные от матерных корней
  • ru-bad - фильтр содержит некоторые ругательства русского языка, не являющиеся матерными
  • en-bad - фильтр содержит ругательства английского языка. На данный момент фильтр содержит всего лишь одно слово "fuck" :-)

Команды модуля nopig:

  • /tgdev/nopig config - отобразить конфигурацию nopig модуля
  • /tgdev/nopig set active yes - включить работу модуля nopig в чате
  • /tgdev/nopig set active no - отключить работу модуля nopig в чате
  • /tgdev/nopig set notification yes - включить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/nopig set notification no - выключить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/nopig add filter ИМЯ - использовать фильтр с именем ИМЯ для поиска ругательств. Здесь ИМЯ должно быть конкретным именем фильтра. Имя фильтра ругательств вы можете посмотреть в списке фильтров ругательств. Пример команды для активирования фильтра ru-mat: /tgdev/nopig add filter ru-mat.
  • /tgdev/nopig remove filter ИМЯ - перестать использовать фильтр с именем ИМЯ для поиска ругательств. Здесь ИМЯ должно быть конкретным именем фильтра. Имя фильтра ругательств вы можете посмотреть в списке фильтров ругательств. Пример команды для отключения фильтра ru-mat: /tgdev/nopig remove filter ru-mat.

Модуль Nohello

Модуль nohello позволяет удалять сообщения, в которых пользователь написал приветствие и ничего больше. Примеры подобных сообщений: "Привет!", "hi", "hello people", "добрый вечер".

Команды модуля nohello:

  • /tgdev/nohello config - отобразить конфигурацию модуля
  • /tgdev/nohello set active yes - включить работу модуля в чате
  • /tgdev/nohello set active no - отключить работу модуля в чате
  • /tgdev/nohello set notification yes - включить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/nohello set notification no - выключить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено

Модуль Nopm

Модуль nopm позволяет удалять сообщения, в которых пользователь просит написать ему личное сообщение. Примеры подобных сообщений: "pm", "пиши в личку", "dm me!", "давай в лс".

Команды модуля nopm:

  • /tgdev/nopm config - отобразить конфигурацию модуля
  • /tgdev/nopm set active yes - включить работу модуля в чате
  • /tgdev/nopm set active no - отключить работу модуля в чате
  • /tgdev/nopm set notification yes - включить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/nopm set notification no - выключить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено

Модуль Nohelp

Модуль nohelp позволяет удалять сообщения, в которых пользователь просит о помощи. Удаляются только те сообщения, в которых больше нет никакой информации кроме самой просьбы о помощи. Примеры таких сообщений: "Help me!", "Помогите, пожалуйста", "прошу, помогите мне", "мне нужна помощь".

Команды модуля nohelp:

  • /tgdev/nohelp config - отобразить конфигурацию модуля
  • /tgdev/nohelp set active yes - включить работу модуля в чате
  • /tgdev/nohelp set active no - отключить работу модуля в чате
  • /tgdev/nohelp set notification yes - включить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/nohelp set notification no - выключить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено

Модуль Sandbox

Модуль sandbox позволяет удалять сообщения пользователя, находящегося в карантине. Каждый новый участник в чата попадает в карантин. Сроком карантина можно управлять. Срок задаётся в часах, прошедших с момента входа пользователя в чат. Если пользователь выходит и снова заходит в чат, то срок карантина начинает отсчитываться заново с нуля.

В модуле sandbox можно управлять тремя типами карантинов:

  • Карантин для запрета новому пользователю публиковать ссылки. Срок этого карантина регулируется через настройку safe_hours. Также дополнительно вы можете запретить публикацию фото, видео и других медиа-сообщений с помощью настройки remove_media.
  • Карантин для запрета новому пользователю публиковать любые сообщения. Срок этого карантина регулируется через настройку mute_hours.
  • Карантин для запрета новому пользователю просить других пользователей написать ему личное сообщение. Срок этого карантина регулируется через настройку nopm_hours.

Если вы хотите, чтобы бот разрешал некоторые ссылки, даже если не истёк срок карантина, добавьте нужные доменные имена в белый список ссылок. Подробности смотрите в разделе "Белый список ссылок".

Команды:

  • /tgdev/sandbox config - отобразить конфигурацию sandbox модуля
  • /tgdev/sandbox set active yes - включить работу модуля sandbox в чате
  • /tgdev/sandbox set active no - отключить работу модуля sandbox в чате
  • /tgdev/sandbox set notification yes - включить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/sandbox set notification no - выключить посылку информационных сообщений с объяснением, почему сообщение пользователя было удалено
  • /tgdev/sandbox set safe_hours ЧАСЫ - задать срок карантина, в течении которого пользователю запрещено писать сообщения, содержащие ссылки. Здесь ЧАСЫ - это число часов от нуля до 720. Например /tgdev/sandbox set safe_hours 12. Используйте нулевое значение, чтобы отключить обработку ботом этого карантина.
  • /tgdev/sandbox set mute_hours ЧАСЫ - задать срок карантина, в течении которого пользователю запрещено писать любые сообщения. Здесь ЧАСЫ - это число часов от нуля до 720. Например /tgdev/sandbox set mute_hours 12. Используйте нулевое значение, чтобы отключить обработку ботом этого карантина.
  • /tgdev/sandbox set nopm_hours ЧАСЫ - задать срок карантина, в течении которого пользователю запрещено просить других пользователей написать личное сообщение. Здесь ЧАСЫ - это число часов от нуля до 720. Например /tgdev/sandbox set nopm_hours 12. Используйте нулевое значение, чтобы отключить обработку ботом этого карантина.
  • /tgdev/sandbox set remove_media yes - дополнительно для карантина safe_hours включить удаление сообщений, содержащих медиа-информацию. Ниже вы можете ознакомиться со типами сообщений, считающихся медиа-информацией.
  • /tgdev/sandbox set remove_media no - для периода safe_hours выключить удаление сообщений, содержащих медиа-информацию.

Типы сообщений, считающихся медиа-информацией:

  • аудио-запись
  • игра
  • GIF-анимация
  • прикреплённый файл
  • фотография
  • видео-запись
  • голосовое сообщение
  • видео-заметка
  • контактная карточка
  • гео-позиция
  • стикер

Модуль uname

Модуль uname позволяет ограничивать действия пользователей, если в их имени или логине обнаружены запрещённые слова.

В разделе документации модуля uname используются два термина:

  • имя пользователя -- это то имя, которое пользователи вводят в поля Имя и Фамилия при настройке своего профиля. Это то имя, которая отображается в сообщениях о действиях пользователя типа "Такой-то присоединился к чату". Это имя в заголовке профиля пользователя.
  • логин пользователя -- это специальное имя, которое есть не у всех пользователей. Если оно есть, оно обычно пишется с символом "@" и является ссылкой на профиль пользователя. Логин пользователя может содержать только буквы английского алфавита, цифры и символ подчёркивания.
  • алфавит -- совокупность всех символов, представленных алфавитом какого-либо языка. Фраза "в имени пользователя находится некий алфавит" означает, что некоторые символы имени пользователя принадлежат множеству символов этого алфавита.

Модуль uname обрабатывает следующие события:

  1. Пользователь присоединился к чату. Если в его имени или логине найдены запрещённые слова, пользователь будет выкинут из чата. Пользователь имеет неограниченное количество попыток повторного входа в чат, но каждый раз он будет выкинут из чата, до тех пор, пока не удалит запрещённые слова из имени или логина.

  2. Пользователь уже находится в чате и написал сообщение. Если в его имени или логине найдены запрещённые слова, то сообщение пользователя будет удалено. Сам пользователь не будет выкинут из чата. Модуль не выкидывает уже существующих пользователей из чата, чтобы уберечь администратора от потери всех участников чата в случае направильной конфигурации списка запрещённых слов. Например, регулярное выражение .* совпадает с любым именем или логином.

Модуль uname содержит следующие настройки со списками:

  • name_word - запрещённые слова в имени пользователя.
  • name_regex - запрещённые регулярные выражения в имени пользователя.
  • login_word - запрещённые слова в имени пользователя.
  • login_regex - запрещённые регулярные выражения в имени пользователя.
  • name_script - запрещённые алфавиты в имени пользователя. Вы можете добавлять в этот список только алфавиты, поддерживаемые модулем uname -- смотрите их список далее.

Алфавиты, которые поддерживает модуль uname:

  • arabic - символы арабского алфавита, буквы которого используются в арабском, иранском и других языках Востока.
  • cjk - иероглифы, использующиеся в китайском, японском, корейском и других языках юго-восточной Азии.

Команды модуля: