Как сделать капчу в телеграмм боте

Обновлено: 07.07.2024

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

У меня в портфолио уже более 20 ботов, и каждый раз я берусь за все более сложные проекты. Да, все этот сделал за последний год. Движусь так сказать.

Итак, к моим бесплатным и безрекламным проектам у меня относится и мой новый бот для групп в телеграмме — @defendy_bot, он и модератор и помогатор защититься от постоянного спама, а еще позволяет использовать систему репутации и много чего еще. Плюс, я постоянно добавляю в него новые функции. Не бот, а конфетка!

  • На базовую разработку и запуск проекта мне потребовалось около 5 рабочих дней.
  • Раз в неделю я выкатываю обновление, добавляющее новые функции / улучшения
  • В боте нет и не будет рекламы, это отличительная особенность и фишка бота, финансы мне тут неинтересны, мне гораздо интереснее, чтобы люди получали максимум пользы от бота.
  • Я проанализировал всех конкурентов, и стараюсь сделать проект, который предложит больше, и лучше по качеству, и бесплатно.
  • Я открыт к диалогу, и прислушиваюсь к фидбеку по боту (если у вас есть по нему замечания/предложения — смело пишите тут в комменты или в контактах бота).

Первая цель для моего бота в цифрах — 100 подключенных групп, и охват в 10 000 человек.

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

Чтобы подключить бота к группе:

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


Так выглядит работа системы репутации

В планах по боту еще более 20 различных команд и функций, мультиязычность, все это буду постепенно по мере сил внедрять, а сервер, на котором размещается бот — оплачен на 4 года вперед. Если брать глобальные планы, то тут конечно — стать ботом номер 1 для групп. Буду к этому идти.

Это мой бот, а я всегда трепетно отношусь к своим разработкам и слушаю людей — если возникла какая либо проблема или у вас есть что сказать — пишите, всегда рад обсудить все, что касаемо бота.

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

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

P.S Чуть не забыл, если нужно разработать бота, можете тоже обращаться.

Кстати, мы тут переделали Телеграмм-бота.
Можно потестировать бота по адресу:

Валерий Кондрашин

DELETED

Виолетта Морозова


Виолетта Морозова ответила Валерию

Виктор Радченко

Владимир Иванов

Андрей Простаков

Владимир Иванов

Игорь Зайнуллин

Сос Быкшмудский

DELETED

Гафур Расулов

Алексей Зерняк

Валерий Лобынцев

Дмитрий Толкач

Владимир Иванов

Андрей Простаков

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

Елена Старовойтова

Наталья Орлова

Виктор Радченко

Наталья Орлова

Спасибо что ответили Виктор нажимаю старт и все появляются три точки загрузки и так грузится постоянно именно сегодня до этого было просто замечательно

Людмила Черная

Татьяна Москалёва

И много желающих капчить в телеге? Вот просто интересно, ради кого надо было испортить боты большинству капчеров?

Валерий Кондрашин

Татьяна Москалёва

Валерий, т.е. проблемы, возникшие с windows-ботом никак не связаны с телегой-ботом? Тогда почему они возникли аккурат в то время, когда наладили телегу-бот? Совпадение?

Игорь Зайнуллин

Любовь Шаргунова

Shuxrat Shokirov

Shuxrat Shokirov

Николай Смолов

Shuxrat, у тебя скорость интернета на скриншоте 2,9 кб/с - это оооочень мало. Потому капчи у тебя и не загружаются. Нужно хотя бы 400 кб/с или 0,4 Мб/с

Shuxrat Shokirov

☹

Вот такая ерунда

Игорь Зайнуллин

Shuxrat Shokirov

Shuxrat Shokirov

Игорь Молчанов


Игорь Молчанов

Валерий Кондрашин

Игорь Молчанов


Игорь Молчанов

Если да, то нахрена в начале он пишет логин, если нет , то про какой ключ он пишет? И что это он на английском?

Елена Старовойтова

Игорь Молчанов


Игорь Молчанов ответил Елене

Елена, Ясно, гемор короче. Логин и пароль помню наизусть, а вот ключ нет. Значить не судьба там попробовать. Слишком ленивый, чтоб лазить в поисках ключа на сайте.

Валерий Кондрашин

Дмитрий Толкач

Марат Зиганшин


Марат Зиганшин

у меня капча тупит глюк)) вроде выбераю все картинки нажимаю подтвердить а оно пишет повторите попытку или всё далее и далее - ребята что за дичь с капчой? объясните пожалуйста у вас у всех есть такая проблема?

Николай Смолов

Марат Зиганшин


Марат Зиганшин ответил Николаю

Николай Смолов

Марат, смотри, рекапчу создает гугл для защиты сайтов от спама и авторегистраций и никак не для того, чтобы на рекапче зарабатывали. Чем больше ты вводишь рекапчу, тум больше гугл подозревает, что ты робот и дает тебе рекапчу всё сложнее и сложнее. Потому нужно менять иногда IP, заходить на сайты различной тематики, заходить в разные аккаунты Gmail и пользоваться почтой Gmail, а не просто входить и выходить. Т.е. разносторонне активничать в интернете.

Подскажите, кто сталкивался с вводом капчи при первом входе на канал либо в группу?

Как реализовать такое решение?

И видел ли кто-то примеры групп с такой возможностью?

Анастасия323:
Добрый день
Подскажите, кто сталкивался с вводом капчи при первом входе на канал либо в группу?
Как реализовать такое решение?
И видел ли кто-то примеры групп с такой возможностью?
Заранее спасибо)

Бота нужно писать

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

В чат довольно много таких ботов тот же комбот если не ошибаюсь, там надо нажать кнопочку мол не бот я.

Zareexx:
В канал никак, только если сделать его закрытым и внутри бота давать капчу вроде напишите сколько будет 20+30, если ответ верный бот берет ссылку из канала приватную и выдает юзеру, после вступления которого ссылка сбрасывается.
В чат довольно много таких ботов тот же комбот если не ошибаюсь, там надо нажать кнопочку мол не бот я.

Если в чат вступает по несколько десятков в секунду, то актуальность ссылки быстро пропадет, если она все время сбрасываться будет.

veleg:
Если в чат вступает по несколько десятков в секунду, то актуальность ссылки быстро пропадет, если она все время сбрасываться будет.

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

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

Содержание:

Возможности бота

Через бота можно будет:

Схема работы бота

Создание бота

Начнём с самого простого шага — создания бота в Telegram. Для этого достаточно написать команду /newbot боту по созданию других ботов BotFather и следовать инструкциям:

Создать бота в Telegram

Успешное создание бота в Telegram

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

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

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

Создание базы данных

Для простоты решения поднимем PostgreSQLв docker-контейнере:

Контейнер запущен, БД готова к работе.

Для минимальной аналитики и контроля подписок нам хватит одной таблицы. Заполним её модель и далее в миграции lequibase создадим:

Таблица для контроля подписок

Создание бэкенда

Перейдём на Spring Initializr и сгенерируем каркас бэкенд-приложения. Достаточно выбрать следующие библиотеки:

Создание приложения на Spring

Развернём сгенерированный проект в среде разработки и добавим туда зависимость для работы с Telegram:

Также добавим библиотеку для мапинга, которая нам пригодится при мапинге сущностей БД в REST-модели:

Создадим миграцию для таблицы, добавим описание подключения к БД и запустим приложение:

Пример структуры проекта

После успешного запуска приложения накатится миграция и создастся таблица:

Таблица создана, приложение успешно запустилось. Теперь можно приступить к описанию Data Access Layer. Для этого опишем сущность, репозиторий и сервис:

Структура бота

Подключение к API Telegram

Чтобы можно было получать данные из бота в наше приложение, достаточно унаследовать от абстрактного класса org.telegram.telegrambots.bots.TelegramLongPollingBot и реализовать три метода:

Добавим в application.yaml данные бота, которые получили от BotFather:

Реализуем поддержку 5 команд:·

Чтобы всеми этими командами было удобно пользоваться, реализуем их в виде кнопок, используя org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup.

Готово! Теперь бот умеет обрабатывать следующие команды.

Результат ответа на вопрос, как получить доступ

Хочу демо-доступ на 3 дня.

Отправка запроса на получение демо-доступа

После получения демо-доступа информация об этом сохраняется в БД. При повторном запросе на демо-доступ пользователю отобразится ошибка:

Ошибка при повторном запросе демо-доступа

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

Чтобы этой командой мог пользоваться только администратор, его Chat ID надо добавить в application.yaml. Далее этот идентификатор будет использоваться при проверке, от кого пришла команда и имеет ли этот пользователь права на выполнение этой команды.

Дополнительно к этому требуется реализовать команду выдачи полного доступа. Класс поменяется следующим образом:

Появилась обработка команд от администратора.

Пример запроса полного доступа к каналу

Таким образом, мы реализовали следующие возможности для пользователя:

В свою очередь, у администратора канала появились следующие возможности:

  • проверить предоставляемые пользователем данные для полного доступа и выдать полный доступ;
  • очистить канал от пользователей с истекшим доступом.

Для удобства развёртывания упакуем наше приложение в Docker и развернём. Добавим в build.gradle:

Далее выполним следующие команды для создания образа и запуска его в докере:

Создание фронтенда

После того, как мы создали handler для обработки команд бота, хочется визуально контролировать подписки и смотреть графики по приросту подписок в разрезе месяца. Для этого создадим отдельное приложение на React с использованием Ant Design. Выполним команду:

После этого у нас будет сгенерировано приложение с минимальной функциональностью. Однако требуется установить ещё несколько библиотек:

После этого основной компонент надо изменить на:

И добавить новый компонент:

Дополнительно к этому добавить функции для выполнения запросов:

Это личный проект, аутентификация зашита, можно с ней особо не заморачиваться. Также в бэкенд требуется добавить конфигурацию Spring Security:

Пример аналитики подписок на канал

А теперь для удобства упакуем и развернём UI в docker-контейнере. Для этого создадим DockerFile:

И выполним команды для сборки и развертывания:

Вывод

Используя Spring Вoot, React и Docker, можно быстро создать небольшую систему для контроля подписок и подписчиков на канале в Telegram. Исходный код двух приложений можно посмотреть здесь и здесь.

Читайте также: