Мы хотим рассказать о проекте, который существует уже больше года и, за свою историю, получил уже больше 200 "звезд" на GitHub. ​Недавно, мы релизнули версию 4.0 - она использует новые версии библиотек (Pyrogram) и имеет дополненный функционал.

Проект не является коммерческим и не содержит никаких платных дополнений / расширения функционала.

Начало

Наш проект начинался как альтернатива чуть ли не единственному работоспособному юзерботу, существовавшего на тот момент - Friendly-Telegram (или FTG). Он использует библиотеку telethon - а мы хотели попробовать ради эксперимента написать тоже самое под pyrogram. Выбор той или иной библиотеки - сугубо личное дело каждого, но, на тот момент, команда склонилась к выбору Pyrogram. Так и появился Dragon-Userbot.

Формирование команды

Спустя какое-то время полу-активной разработки, владелец организации (John Phonk) решил открыть проект для всех, сделав репозиторий публичным. Спустя время, проект заметили, и к нам начали присоединяться контрибьюторы. Из них, позже, сформировалась основная команда разработчиков, которая отвечает за репозитории и модерацию модулей.

Уникальные фишки

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

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

Во-вторых, мы блокируем вызов самых опасных методов - в данный момент это только DeleteAccountRequest, но список будет расширяться, по мере сообщений об опасностях определенных методов / злоупотребления ими.

Помимо этого, команда разработки практически постоянно находится на связи с пользователем. Мы очень быстро реагируем на Issues и Pull Requests, оказываем поддержку пользователям и разработчикам сторонних модулей в нашем Telegram-чате.

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

Помимо этого, мы поддерживаем работу с двумя базами данных из коробки - SQLite и MongoDB, и используем наследование от базового класса DataBase, что делает возможность реализации дополнительных баз данных настолько простой, насколько это возможно.

Зачем это все

Помимо очевидных функций - автоматизации многих действий и модулей просто для забавы, у нас есть действительно полезные модули. О некоторых из них, мы сейчас расскажем:

  1. Безопасность.

    Из коробки, доступен модуль SessionKiller. Он "убивает" все новые сессии, которые появились в аккаунте с момента активации модуля. Помимо этого, в нем есть команда, которая позволяет проверить активные сессии в удобном виде. Да, такая возможность есть во встроенном клиенте Telegram, однако не вся информация видна в нем. Например, с помощью нашего модуля можно посмотреть последнюю активность конкретной сессии, вплоть до секунды, увидеть Hash модуля и информацию о том, является ли APP_ID и APP_HASH официальными для конкретного приложения или просто имитирует их (конечно, можно использовать официальные ID и HASH, чтобы полностью имитировать официальное приложение, но такие попытки, зачастую, блокируются Telegram). В планах, добавить возможность удалять сессию по ее hash.

  2. Администрирование чатов.

    Модуль admintool предоставляет широчайший набор возможностей для администрирования чата. Есть уникальная возможность удалять сообщения конкретного человека без блокировки такой возможности средствами Telegram. Помимо этого, можно быстро очистить чат от удаленных / заблокированных аккаунтов и много чего еще.

  3. Просмотр списка каналов и чатов, которыми Вы владеете / которые Вы администрируете.

    Благодаря модулю admlist, Вы можете получить список чатов и каналов, в которых Вы являетесь владельцем или администратором. Такая возможность доступна в Telegram только при переполнении лимита публичных ссылок, и то - видно только чаты с публичными ссылками.

  4. Удобство.

    Модули для юзербота могут посылать одинаковые запросы несколько раз. Самый простой пример - когда Вам нужно удалить большое количество сообщений (больше 100), Telegram не даст Вам этого сделать. А используя модуль purge, Вы можете удалить столько сообщений, сколько захотите - юзербот сам разделит их на чанки по 100 штук и отправит запросы на удаление.

Чем это может быть полезно для бизнеса?

Частый вопрос к любому Open-Source проекту - его полезность за пределами развлечений и личных целей. А потому, хочется отметить, что мы смогли внедрить форк этого проекта внутрь компании.

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

Работает через интеграцию с systemd и docker.

Еще, можно доработать код так, чтобы он уведомлял человека об определенных событиях. Самый очевидный паттерн использования - проверка работы телеграм-бота, поскольку мы работаем от имени аккаунта пользователя. Так, например, можно реализовать модуль, который будет каждую минуту отправлять сообщение боту, и, при отсутствии ответа, отправлять сообщение в чат разработчиков. А еще, если взять во внимание предыдущий пункт, можно сразу же перезапускать юнит / контейнер, чтобы все поднялось (или нет ¯⁠\⁠_⁠(⁠ツ⁠)⁠_⁠/⁠¯).

Помимо этого, в коде много мест, по которым можно оценить уровень владения языком разработчиками - что сильно упрощает оценку технических навыков при трудоустройстве.
Это уже менее очевидный плюс, но, тем не менее, участие разработчика в OpenSource сильно влияет на его резюме.

А если мне нужно что-то, чего нет в модулях из коробки

Без проблем! Обладая навыками программирования, вы можете написать собственные модули, которые будут делать именно то, что нужно конкретно Вам. После этого, при желании, Вы можете сделать модуль доступным для всех - просто загрузив его к нам в репозиторий. Мы проверим модуль, и, если он не содержит вредоносного кода, опубликуем его.

У нас уже есть достаточно большая база модулей - например, модуль для Spotify (через него можно, в том числе, управлять плеером через Spotify Connect) или модуль для LastFM (он сам находит и отправляет в чат трек, который сейчас играет). Помимо этого, есть и просто красивые модули - например, аналог "сердечек", который ранее распространяли обфусцированным и с стиллером сессий.

Как это работает?

Мы используем Pyrogram в качестве основы для работы бота и загружаем модули достаточно хитрым способом. Вы можете посмотреть код (или внести изменения) на нашем GitHub. Мы постоянно дорабатываем алгоритм загрузки модулей, работаем над обработкой ошибок и прочее. Так же, практически весь код - асинхронный.

Хочется отметить, что разработка данного проекта сильно прокачала наши навыки в поисках нестандартных решений и сильно улучшила наши знания об архитектуре Python. Во многих местах используется "сырое" (RAW) API Telegram.

Установка

Официально, мы поддерживаем только Linux/MacOS, однако, наш проект можно установить и под Windows. В таком случае, стоит понимать, что некоторые модули могут перестать работать или работать некорректно.

ПРЕДУПРЕЖДЕНИЕ:

Мы не несем ответственность за любые последствия, возникшие в результате использования проекта. Использование средств автоматизации на аккаунте противоречит условиям предоставления сервиса Telegram - вы действуете на свой страх и риск.

Учитывайте, что использование стандартных APP_ID и APP_HASH значительно повышает вероятность блокировки. Настоятельно рекомендуем создать свои на сайте https://my.telegram.org/ и использовать их.

На практике, вероятность бана сильно зависит от "кармы" аккаунта - в первую очередь, на нее влияет дата регистрации (чем старше аккаунт, тем лучше) и предыдущие блокировки/ограничения (чем меньше, тем лучше)

Итоги

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

Мы приветствуем обратную связь и запросы пользователей на модули - свои мысли можно высказать в комментариях под этим постом и в наших чатах.

Проект какое-то время был неактивен, но это не повлияло на его функциональность, поскольку наша команда регулярно вносит необходимые изменения.

Спасибо за прочтение!

Наш репозиторий на GitHub - https://github.com/Dragon-Userbot/Dragon-Userbot/

Ссылки на все наши чаты и соцсети - там же.

Комментарии (11)


  1. freQuensy23
    19.09.2023 23:41
    +12

    Все круто, но можно хоть слово про то что это вообще такое?


    1. theurus
      19.09.2023 23:41

      Бот для телеграма. Но не тот белый и пушистый бот который имеет много ограничений( бот не видит других ботов, не может первым начать разговор итп) а тот который может рассылать спам, удерживать захваченный аккаунт итп.


      1. MAXH0
        19.09.2023 23:41

        А мирные применения есть? Или это просто спец-техника..


        1. kulhaker478
          19.09.2023 23:41

          Я где-то с пару лет использую аналогичный по сути проект Friendly Telegram, допилил модуль админ инструментов (даже без знаний питона) и автоматизировал выдачу мута человеку на заданное время + ответ определённым текстом. В итоге когда кто-то нарушил что-то в чате всё сводится к одной команде

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

          Применение действительно фантазией ограничивается, другой вопрос нужно ли оно конкретному человеку


          1. theurus
            19.09.2023 23:41
            -1

            а юзербот то зачем? выписать бан или мут может и нормальный бот


            1. kulhaker478
              19.09.2023 23:41

              Вот так не может

              выдачу мута человеку на заданное время + ответ определённым текстом


              1. theurus
                19.09.2023 23:41

                не понятно что там происходит, почему это обычный бот не может выдать мут и ответить определенным текстом


                1. kulhaker478
                  19.09.2023 23:41

                  Вы так пишете как будто каждый админ-бот может в кастомные команды. Например один из популярных Miss Rose, не умеет, может я чего-то не знаю? А даже если и есть возможность заменить текст-ответ после мута, то это будет глобального для всей команды /mute. Остаётся только брать исходники отрытых ботов/юзерботов и допиливать под себя


            1. fuccsoc Автор
              19.09.2023 23:41
              +1

              Юзербот - не замена привычным ботам, а их дополнение. Помимо автоматизации конкретных действий (пример ниже), можно использовать методы пользователя для получения данных, доступных только пользователю.

              Например, получение информации о чатах/каналах, которыми Вы владеете или поиск музыки по разным ботам в телеге. Обычные боты так не умеют.


        1. fuccsoc Автор
          19.09.2023 23:41

          Есть

          Наш проект как раз не про это, мы не предоставляем модулей для рассылки спама по пользователям (модуль spam отправляет сообщение в конкретный чат и его применение легко блокируется) и для захвата/удержания украденных аккаунтов (модуль sessionkiller не сможет удалять сессии в течение первых суток)


        1. Goron_Dekar
          19.09.2023 23:41
          +1

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