Как создать бота кликера в телеграмме

от admin

Как создать бота кликера в телеграмме

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345

Lil-hack/click-bot-telegram

  1. Скачиваем проект с гитхаба. Запускаем проект в любой среде разработки для python (Например: PyCharm).
  2. Среда разработки автоматически подгрузит необходимые библиотеки с файла requirements.
  3. Заменяем Token от BotFather в файле main.py
  4. Запускаем проект
  5. Со второго аккаунта нажимаем /start и пишем слово «admin»
  6. Выключаем проект и заполняем admin_id и config_id в файле main.py
  7. Запускаем проект и с аккаунта пользователя нажимаем старт />
  8. Профит

В качестве базы данных на стороннем сервере использовался PostgreSQL на Amazon RDS с минимальными характеристиками.

Инструкция: Как создавать ботов в Telegram

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

Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.

Рассмотрим API на примере создания тривиального бота:

1. Регистрация

Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот — @BotFather.

Пишем ему /start и получаем список всех его команд.
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение.

Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot<TOKEN>/getMe, говорят, не всегда работает с первого раза.

2. Программирование

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

Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)

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

Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.

Здесь CMD — словарь доступных команд, а send_reply — функция отправки ответа, которая на вход принимает уже сформированный объект Message.

Собственно, её код довольно прост:

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

3. Команды

Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:

Структура message[‘from’] — это объект типа User, она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message[‘chat’][‘id’] — в случае личного общения там будет User, а в случае чата — id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.

Команда /start без параметров предназначена для вывода информации о боте, а с параметрами — для идентификации. Полезно её использовать для действий, требующих авторизации.

После этого можно добавить какую-нибудь свою команду, например, /base64:

Для пользователей мобильного Telegram, будет полезно сказать @BotFather, какие команды принимает наш бот:
I: /setcommands
BotFather : Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:

command1 — Description
command2 — Another description
I:
whoisyourdaddy — Information about author
base64 — Base64 decode
BotFather: Success! Command list updated. /help

C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.

4. Свобода

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

UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/<command>) (https://core.telegram.org/bots#privacy-mode)

  • All messages that start with a slash ‘/’ (see Commands above)
  • Messages that mention the bot by username
  • Replies to the bot’s own messages
  • Service messages (people added or removed from the group, etc.)

Чтобы бот получал все сообщения в группах пишем @BotFather команду /setprivacy и выключаем приватность.

Для начала в Handler добавляем обработчик:

А потом в список команд добавляем псевдо-речь:

Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

5. Не текст.

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

Для примера расширим словарь RESPONSES:

И будем отлавливать текст <at_sticker>:

Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:

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

6. Возможности

Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).

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

7. Ограничения

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

К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:

P.S. По пункту 7 нашел удобное решение — размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.

Читать:
Как отключить hands free windows 10

UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч ‘method’: ‘sendMessage’ (или любой другой метод, используемый ботом).

Name already in use

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

  1. Скачиваем проект с гитхаба. Запускаем проект в любой среде разработки для python (Например: PyCharm).
  2. Среда разработки автоматически подгрузит необходимые библиотеки с файла requirements.
  3. Заменяем Token от BotFather в файле main.py
  4. Запускаем проект
  5. Со второго аккаунта нажимаем /start и пишем слово «admin»
  6. Выключаем проект и заполняем admin_id и config_id в файле main.py
  7. Запускаем проект и с аккаунта пользователя нажимаем старт />
  8. Профит

Тестирование и графики

Графики сделаны по выборкам из

100 запросов. И представлены средние показатели выборки.

В качестве базы данных на стороннем сервере использовался PostgreSQL на Amazon RDS с минимальными характеристиками.

При одном миллионе пользователей время бэкапов становится проблемой.

Размер бэкапа полностью зависит от вашей модели данных, в моем случае при одном миллионе пользователей получилось данных на 21 мегабайт.

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

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

Вот выше описанный проект, развернутый на heroku: @Clicker_fast_bot

Так же я реализовал более сложный проект с данной идеологией: @Random_friend_bot

Как создать бота в Telegram

Как создать бота в Telegram

Что нужно знать, прежде чем создавать бота в Telegram

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

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

Но так или иначе сначала бота нужно создать. Делается это следующим образом.

Как создать бота в Telegram

Чтобы сделать своего бота, понадобится другой бот — BotFather. Это официальный инструмент для создания ботов и управления ими. Найти BotFather можно через поиск. Обратите внимание на синюю галочку рядом с именем: именно она укажет на правильный чат.

Запустите диалог с ним и нажмите «Начать».

Кликните по кнопке меню и выберите /newbot.

BotFather попросит назвать вашего бота. Введите желаемое имя и нажмите «Отправить».

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

Далее BotFather предоставит ссылку на созданного бота и токен для обращения к нему. Ссылка нужна для поиска бота, ею можно делиться. А вот токен — длинный набор символов — вещь секретная. Это своеобразный ключ, с помощью которого осуществляется управление программой. Сохраните его в надёжном месте и никому не показывайте.

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

Как настроить бота в Telegram

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

Также при желании можно добавить описание (/setdescription), прикрепить аватар (/setuserpic) или сменить имя (/setname). Все эти действия осуществляются через меню в BotFather. Если у вас несколько ботов, то сначала придётся выбрать нужный из списка.

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

Подключение бота

Сначала нужно открыть чат с Manybot, перейдя по ссылке, и нажать «Начать».

Затем выбрать удобный для вас язык.

Кликните «Добавить нового бота».

А вот теперь понадобится токен созданного ранее бота, который выдал BotFather. Нажмите «Я скопировал токен» и отправьте его Manybot.

Добавьте описание бота, которое будут видеть пользователи, или пропустите этот шаг.

Создание команд

Далее вернитесь к своему боту, которого создали с помощью BotFather, и нажмите «Начать».

Выберите «Пользовательские команды».

Затем — «Создать команду».

Придумайте название команды латинскими буквами, начиная со слеша.

Впишите текст, добавьте ссылки или фото, которые увидит пользователь после вызова команды. Сообщений может быть несколько. Нажмите «Отправить», а затем «Сохранить».

Таким же образом через меню «Создать команду» добавьте остальные команды, которые вам нужны. В нашем примере это подкасты, вакансии и обратная связь.

Добавление кнопок в меню

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

Кликните «Добавить пункт меню».

Выберите нужную команду.

Придумайте название для кнопки и нажмите «Отправить».

По такому же принципу добавьте кнопки для других команд.

Проверка работы бота

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

Протестировать бота из нашего примера и посмотреть, как выглядит работа с ним, можно по этой ссылке.

Похожие статьи