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

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

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

ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ ЛЮБОЙ ИЗ ЭТИХ БОТОВ, ОНИ ТЕПЕРЬ ВСЕ ОДИНАКОВЫЕ.

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

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

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

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

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

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

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

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

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

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

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

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

Настройка часовой зоны чата едина для всех модулей. Часовая зона хранится в модуле system.

Список команд для управления часовой зоной чата:

  • /tgdev/system set time_zone ЗОНА - задать часовую зону чата. Значение ЗОНА задаётся в виде "ЧЧ:ММ" или "-ЧЧ:ММ"

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

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

  • модуль 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 часов с момента удаления сообщения.

Быстрые команды

Быстрые команды имеют простую короткую запись и позволяют админстратору чата быстро получить доступ к ряду фунций.

  • +mute - запрет пользователю писать сообщения в чат
  • +kick - исключение пользователя из чата с возможностью вернуться в чат
  • +ban - исключение пользователя из чата без возможности вернуться в чат (бан)
  • +unban - отмена запрета на вход пользователя в чат (отмена бана)
  • +del - удаление сообщения через заданное количество времени
  • +unpin - открепление (удаление из закреплённых) сообщения через заданное количество времени
  • +whois - вывести информацию об участнике чата

Некоторые быстрые команды требуют указать период времени. Период времени можно задать одним из двух способов:

  1. Значение inf означает бесссрочное период времени. Например, после выполнения команды +mute inf пользовать не сможет писать в чат, пока админ вручную не снимет с него ограничение.
  2. Значения вида m1, h1, d1, w1 соответствуют периодам времени в одну минуту, один час, один день и одну неделю, соответственно. Вместо единицы вы можете использовать другое число. Например, m33 означает период времени длиной в тридцать три минуты.

Команда +mute ВРЕМЯ запрещает пользователю писать сообщения в чат. Здесь ВРЕМЯ означает период времени, в течении которого будет действовать ограничение. Команду +mute нужно обязательно писать в ответе на сообщение, автора которого вы хотите ограничить.

У команды +mute есть расширенный вариант записи, в котором вы можете указать также причину ограничения. Например, в команде +mute d1 ругается матом весь текст команды, указанный после периода времени, будет являться значением причины. Причина ни на что не влияет и в данный момент используется лишь в информационном уведомлении, которое бот пишет в чат, если ему удалось ограиничить пользователя. Пример такого уведомления: Пользователю Алексей Алексеев запрещено писать сообщения до Dec 18, 2023 18:42 UTC, причина: ругается матом.

Команды +ban и +kick исключают пользователя из чата. Эти команды нужно вводить в ответе на сообщение пользователя, которого вы хотите исключить из чата. Отличие команды +kick от +ban в том, что первая команда разрешает пользователю вернуться в чат, тогда как вторая банит его навсегда. Обе команды поддерживают расширенный синтакси т.е. +ban ПРИЧИНА и +kick ПРИЧИНА, где ПРИЧИНА — это произвольный текст, который может содержать пробелы. Как и в случае +mute команды, причина не влият ни на что, а только лишь присутствует в уведомлении бота, в случае, если пользователь был успешно исключён из чата.

Команда +unban отменяет запрет на вход пользователя в чат или, другими словами, снимает бан. Эту команду нужно вводить в ответе на сообщение пользователя, которого вы хотите разбанить.

Команда +del ВРЕМЯ удаляет сообщение через заданное время. Здесь ВРЕМЯ задаётся в формате, описанном выше. Эту команду нужно вводить в ответе на сообщение, которое вы хотите удалить.

Команда +unpin ВРЕМЯ убирает сообщение из списка закреплённых сообщений через заданное время. Здесь ВРЕМЯ задаётся в формате, описанном выше. Эту команду нужно вводить в ответе на сообщение, которое вы хотите открепить.

Команда +whois выводит информацию об участнике чата. Эту команду нужно писать в ответ на сообщение пользователя, информацию о котором вы хотите увидеть. На данный момент времени (20 декабря 2023) команда выводит идентификатор, логин, а также, если таковая информация есть, статус участника чата и дата изменения статуса. Наиболее частый статус это просто обычный статус участника чата, а дата измения этого статуса означает дату входа участника в чат.

Модуль 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 используются следующие термины:

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

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

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

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

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

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

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

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

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

Модуль freq

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

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

Важно. Количество сообщений, написанных пользователем, отсчитывается от начала текущего периода. Например, пользователь пишет сообщение в 14:13. Модуль freq рассчитывается количество его сообщений за час используя диапазон от 14:00 до 14:13. Это же верно и для суточного периода. Количество сообщений пользователя отсчитывается от начала суток. Вы можете управлять настройкой временной зоны вашего чата, чтобы отсчёт выглядел более корректным. Смотрите раздел Задание настроек времени для справки, как изменить временную зону чата.

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

  • /tgdev/freq set limit_minute ЧИСЛО -- установить максимальное количество сообщений, которые пользователь может писать в чат за одну минуту.
  • /tgdev/freq set limit_hour ЧИСЛО -- установить максимальное количество сообщений, которые пользователь может писать в чат за один час.
  • /tgdev/freq set limit_day ЧИСЛО -- установить максимальное количество сообщений, которые пользователь может писать в чат за сутки.
  • /tgdev/freq set limit_flood ЧИСЛО -- установить максимальное количество сообщений, которые пользователь может написать подряд т.е. без прерывания сообщениями других пользователей.
  • также смотрите раздел Общие команды для управления любым модулем

Модуль Nosticker

Модуль nosticker позволяет удалять стикеры. В данный момент можно работать только со стикерпаками целиком т.е. нельзя запретить определённый стикер из стикерпака, вы можете только запретить весь стикерпак.

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

  1. Режим удаления запрещённых стикерпаков. Этот режим включен по-умолчанию. В этом режиме модуль пропускает все стикерыпаке кроме тех, которые вы явно запретили. Для запрещения стикерпака вам нужно использовать список disabled_pack.
  2. Режим удаления неразрешённых стикерпаков. В этом режиме модуль удалет все стикерпаки, кроме тех, которые вы явно разрешили. Для разрешения стикерпака, вам нужно добавить его в список allowed_pack. Для включения этого режима вам нужно выставить настройку default_deleted в yes.

Списки модуля:

  • allowed_pack -- список разрешённы стикерпаков. Этот список используется в режиме удаления всех стикерпаков кроме тех, которые явно разрешены.
  • disabled_pack -- список запрещённых стикерпаков. Этот список используется в режиме удаления только тех стикерпаков, которые явно запрещены.

В разрешённых и запрещённых списках стикерпаков используются идентификаторы стикерпаков. Не путайте их с именами стикерпаков, которые вы видите при просмотрет стикерпака. Идентификатор стикерпака может состоять только из букв английского алфавита, цирф и знака подчёркивания. Чтобы узнать идентификатор стикерпака вам нужно ответить на сообщение, содержащее стикер, командой /tgdev/nosticker analyze.

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

  • /tgdev/nosticker set default_delete no -- включить режим удаления только явно запрещённых стикерпаков из списка disabled_pack.
  • /tgdev/nosticker set default_delete yes -- включить режим удаления всех стикерпаков, кроме явно разрешённых в списке allowed_pack.
  • /tgdev/nosticker analyze -- используйте эту команду в ответ на сообщение, содержащее стикер, чтобы узнать единтификатор стикерпака этого стикера.
  • /tgdev/nosticker disable_pack -- используйте эту команду в ответе на сообщение, содержащее стикер. Результатом выполнения команды будет запрет соотвествующего стикерпака т.е. помещение его идентификатора в список disabled_pack. Также идентификатор этого стикерпака будет исключён из списка allowed_pack, если он там находился.
  • также смотрите раздел Команды для управления списками любого модуля
  • также смотрите раздел Общие команды для управления любым модулем

Модуль Welcome

Модуль welcome позволяет писать в чат приветствие, когда новый участник присоединяется к чату. Вы можете задать текст приветствия.

Вы можете использовать стили в тексте приветствия. Размечать текст нужно с помощью HTML тэгов. Список поддерживаемых тэгов можно посмотреть в официальной документации Telegram: https://core.telegram.org/bots/api#html-style

В тексте можно использовать макросы. Макрос %user% заменится на имя пользователя. Другие макросы пока что не поддерживаются.

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

  • /tgdev/welcome set message ТЕКСТ -- задать текст приветственного сообщения
  • /tgdev/welcome show_message -- посмотреть, как выглядит приветственное сообщение
  • /tgdev/welcome set message_timeout ВРЕМЯ -- задать время, через которое приветственное сообщение будет удалено. Время задаётся в секундах, значение по-умолчанию равно 120 секундам.
  • также смотрите раздел Общие команды для управления любым модулем