Как сделать Телеграм бота для task based соревнований

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

В этой инструкции опишем процесс создания бота в Telegram на Python . В качестве примера создадим Telegram-бот компании Timeweb Cloud, который будет приветствовать пользователя и предлагать ему перейти на сайт компании.

Как создать бота в Telegram на Python пошагово

Шаг 1. Регистрация бота в BotFather

После нажмите кнопку «Запустить» в нижней части окна и выберите в открывшемся списке команду /newbot . Бот предложит указать имя создаваемого бота. В нашем случае укажем TimewebCloudBot, и его же продублируем в качестве короткого имени.

После этого бот будет создан.

Как создать своего бота в telegram?

Надежно сохраните токен бота — в будущем он понадобится для авторизации и работы с ботом.

Шаг 2. Подготовка необходимых компонентов

Переходим к подготовке необходимых компонентов. На вашем компьютере должен быть установлен Python и среда разработки (в нашем случае это PyCharm).

Установить Python на Windows 10 можно по нашей инструкции, а после скачать PyCharm с сайта разработчика и установить его.

В качестве библиотеки мы будем использовать pyTelegramBotAPI . Установить ее можно, с помощью следующей команды:

pip install pyTelegramBotAPI

Все необходимые компоненты установлены. Переходим к следующему шагу.

Шаг 3. Написание кода

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

import telebot

botTimeWeb = telebot.TeleBot(‘Уникальный токен’)

from telebot import types

Вместо Уникальный токен укажите токен, который вы получили при регистрации бота. Кавычки необходимо сохранить.

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

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

Разберем написанный выше код по порядку.

Первые две строчки объявляют метод обработки входящих сообщений. В нашем случае в качестве параметра передается команда /start .

Далее объявляется переменная first_mess , хранящая указанную строку. Она будет отображаться пользователю после вызова команды /start . Здесь также используется объект Message , необходимый для определения имени ( first_name ) и фамилии ( last_name ) пользователя.

Далее следуют 3 строчки кода, отвечающие за добавление кнопки, которая в будущем будет перенаправлять пользователя на следующее сообщение. Тип данной кнопки — Inline. Это значит, что такая кнопка будет отображаться прямо под сообщением. Для ее создания необходимо использовать метод InlineKeyboardButton . Параметр text отвечает за имя кнопки, а callback_data — за возвращаемую строку при нажатии. Второй параметр понадобится для реализации функционала кнопки.

И наконец, добавляется метод send_message , необходимый для отправки сообщения пользователю. У него указаны 4 параметра:

  • message.chat.id отвечает за синхронизацию сообщения с чатом бота;
  • first_mess передает ранее указанное сообщение;
  • parse_mode необходим для указания режима разметки сообщений;
  • reply_markup отвечает за добавление созданной кнопки.

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

В начале объявляется метод для обработки запросов обратного вызова. Выполняется проверка на соответствие строки, указанной после == и возвращенной после нажатия кнопки. Так как ранее мы указали значение параметра callback_data = ‘yes’ , то проверка пройдет успешно.

После проверки реализован функционал кнопки. Переменная second_mess хранит текст ответного сообщения. А далее описана реализация кнопки, которая хранит ссылку на сайт компании Timeweb Cloud.

Последним шагом будет указать боту на то, что обработка команды закончена. Для этого указываем команду answer_callback_query .

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

botTimeWeb.infinity_polling()

Бот создан. Сохраните файл с кодом и переходите к его запуску.

Шаг 4. Запуск бота

Откройте терминал и выполните запуск проекта:

python main.py

Теперь бот запущен, можно переходить в Telegram и тестировать его.

Для дополнительной безопасности и стабильности рекомендуется запускать бота на виртуальном сервере. Арендовать надежный облачный сервер можно на Timeweb Cloud .

Шаг 5. Тестирование бота

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

Еще по теме:  Как в ТГ выбрать все сообщения

Для начала работы нажмем «Запустить» внизу экрана.

Бот обработает команду и выведет приветственное сообщение.

Для продолжения работы с ботом нажмем кнопку под сообщением.

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

В ответ на нажатие кнопки бот предложит перейти по ссылке. Нажимаем «Перейти» и переходим на сайт компании.

Заключение

Как сделать телеграм бота для task based соревнований

Идеи и проблемы

Последнее время в Клубе только и разговоров, что о Телеграме: люди ведут заметки в приватных каналах, скрещивают Telegram с Notion и делают другие интересные штуки. Мы используем мессенджеры не только для обмена сообщениями, но и как большой набор инструментов для работы с информацией — приложение для заметок, телефонный и адресный справочник, календарь, хранилище закладок и т. д. Конечно, для большего удобства можно переносить ее в специализированные приложения, но большая часть информации в мессенджерах короткоживущая. Если приятель пригласил в гости, проще и быстрее посмотреть адрес прямо в чате по пути на вечеринку, чем копировать его в заметки.

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

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

Интеграция мессенджера и списка задач

Меня же заинтересовала более узкая проблема — интеграция менеджера задач в приложение для обмена сообщениями. Зачастую личные задачи мы получаем в виде сообщений с какими-то просьбами; например, список покупок от жены. Такие задачи может быть проще открыть и посмотреть прямо в диалоге, а не заносить в отдельное приложение со списком дел. Но сообщение с задачей может быстро потеряться среди новых сообщений.

Решение — возможность просмотра сообщений-задач в отдельном списке с разделением по собеседникам; как Сохраненные сообщения, но с категоризацией по чатам. Уже хорошо, но можно развить идею дальше: если мы о чем-то просим собеседника, то хотим, чтобы он, во-первых, не пропустил сообщение, а во-вторых — проконтролировать, выполнена ли задача.

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

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

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

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

Как пользоваться

Результаты и выводы

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

Еще по теме:  Голосование в Телеграмме как посмотреть кто как проголосовал

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

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

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

Сообщество

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

  • всего бот попробовали 8340 пользователей, которые создали почти 20 тысяч задач;
  • последнее время в месяц создается около 1000 задач, количество активных пользователей около 500 в месяц.

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

Зато я узнал, что в 1950-х в КНР перешли на упрощенные иероглифы, а Тайвань остался на традиционных, и теперь параллельно существуют два китайских алфавита, радуя разработчиков. Вообще, я пожалел о том, что сделал выбор языка — теперь лишний раз не изменить строки в коде, потому что могут сломаться переводы. Следующего бота (для отслеживания подписок) я сделал только на английском.

Но самая частая просьба — это сделать Таскобота для групповых чатов. Люди пытаются использовать бота для работы и просят добавить выбор нескольких исполнителей, дедлайны, оповещения и т. д. Мне не особо интересно делать менеджер проектов, так что дарю идею: есть некоторое количество людей, которые готовы использовать Telegram для ведения рабочих проектов. Правда не знаю, готовы ли они за это платить. Однако я видел задание на бирже фриланса — разработать копию моего бота с фичами для групп за $12. С одной стороны лестно, а с другой — исполнитель мог заработать на этом примерно на 12 долларов больше меня, ибо я пока только трачусь на сервер.

Монетизация

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

Технологический стек

Изначально бот был написан на Котлине, в 2017-м году я был влюблен в этот язык. Но он оказался для меня как gateway drug в функциональное программирование, так что переписал его на Scala, мой основной язык сейчас. Стек самый модный, я хотел иметь на своем Github проект на новой библиотеке для функционального асинхронного программирования — ZIO.

По итогам могу сказать, что подход ZIO мне нравится гораздо больше, чем концепция Tagless Final, которую я пробовал до этого. Код получается проще, куда лучше поддерживается средой разработки, и не нужно иметь дело с жуткими монад-трансформерами. Я остался очень довольным и начал внедрять ZIO в своей команде на работе. Мне кажется, что это будущее ФП на Scala.

Для взаимодействия с Telegram Bot API используется библиотека Telegramium. Я сейчас являюсь ее ментейнером и многое допиливаю параллельно с разработкой своих ботов, то есть занимаюсь догфудингом. Это простой unopinionated инструмент с полной поддержкой Bot API, при ее использовании не нужно сражаться с абстракциями, зато можно расширять своими. Для своих ботов я написал DSL для обработки callback-query запросов, вдохновленный функциональной библиотекой http4s. Он позволяет создавать «контроллеры» в разных файлах и потом объединять их в едином «роутере».

Хостится бот на VPS и self-hosted PaaS Dokku. Очень люблю эту технологию, снимает все головные боли, связанные с менеджментом сервера для приложения. Из коробки есть настройка nginx, генерация и обновление сертификатов, создание и подключение БД, blue-green deployment, запуск контейнеров, разработчику остается только писать код.

Еще по теме:  Как узнать номер телефона по тегу в Телеграмме

Ссылки

На этом все, замечания и пожелания пишите в комментарии или мне в Telegram johnspade.

  • Ссылка на добавление бота в Telegram: tasko_bot.
  • Исходный код можно найти на Github.

Источник: vas3k.club

Создаем бот для Телеграм-канала быстро, легко и просто

Превью к статье

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

Уголок Админа — авторский блог о Телеграм. Только качественная и полезная информация о продвижении и развитии Телеграм-каналов.

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

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

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

Небольшой список таких конструкторов:

  1. Menu Builder Bot
  2. PuzzleBot
  3. Botmother
  4. Chatforma
  5. Manybot
  6. Bottap
  7. Telegrambot
  8. Aimylogic
  9. Fleepbot подробный обзор.
  10. WinWinbot подробный обзор.

Ниже я разберу пример создания бота в Телеграм через конструктор Fleep.

Создаем бот с помощью конструктора Fleepbot

Fleepbot — конструктор умных чат-ботов для бизнеса. В нем возможно создавать боты для отложенных постов и умных чат-ботов под разные цели и задачи.

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

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

Создаем бот

Чтобы создать бот для Телеграм-канала через Fleepbot, работаю по следующему плану:

Бот для Телеграм-канала через конструктор fleep

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

Бот для Телеграм-канала, подсказки по работе в конструкторе

Бот для Телеграм-канала, инструкция по созданию

Создаем бот для Телеграм-канала в BotFather

5. Ввожу команду /newbot, бот просит придумать название. Назову просто «Прайс».

Команда /newbot

6. Название дано, выбираю юзернейм (на окончании обязательно должно быть слово «bot»). Даю юзернейм «price15_bot». Если бот ругается, значит юзернейм занят и следует попробовать другой.

Токен бота в Телеграм

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

7. Использую команду /setuserpic для добавления аватарки и отправляю фото. Отправляю команду, выбираю бот и присылаю фото для аватарки.

Бот для Телеграм-канала, установка аватарки

8. Аватарка сделана, добавляю описание. Есть две команды: /setdescription и /setabouttext. Команда /setabouttext дает возможность установить описание бота в шапке. Команда /setdescription дает возможность установить описание бота при старте.

9. Ввожу /setabouttext и даю описание бота в шапке. Например «Прайс-бот с рассылкой выгодных предложений».

Добавляем описание бота

10. Ввожу /setdescription и отправляю текст для описания бота при старте. Сделаю текст таким же как и в шапке бота «Прайс-бот с рассылкой выгодных предложений».

Добавляем описание бота

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

Все готово, теперь создаю кнопки в боте.

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

1. Захожу в созданный бот и запускаю его.

Создаем кнопки в боте

2. Запустил бот, теперь настраиваю его. Нажимаю «Настройки».

Создаем кнопки в боте шаг 2

3. Я делаю простой бот с двумя кнопками. Нажимаю «Меню», затем «Главное меню».

Создаем кнопки в боте шаг 3

И нажимаю на значок плюса.

Создаем кнопки в боте шаг 4

4. Выбираю тип кнопки «Обычная».

Создаем кнопки в боте шаг 5

5. Бот просит ввести название для кнопки. Называю ее «Цена на рекламу».

Создаем кнопки в боте шаг 6

6. Ввожу ответ — текст, который получит пользователь, нажав на кнопку в боте. Я ввожу, например, такой: «Реклама в канале стоит 1000 руб.» и нажимаю «Готово».

Создаем кнопки в боте шаг 6

Кнопка готова, бот отправляет сообщение о ее успешном создании.

По инструкции выше я создаю и вторую кнопку в боте, назвав ее «Статистика».

Проверяем бот

Бот создан, пора найти и проверить его.

1. С другого аккаунта Тг ищу в поиске свой созданный бот.

Находим бот в поиске

Созданный бот

3. Проверяю кнопки. Все работает, по нажатию бот выдает нужную информацию.

Запускаем созданный бот

Статистика и рассылка

Проверяю, как работает рассылка через бот.

1. Захожу с аккаунта создателя в бот (того, на котором создавал бот) и жму «Статистика», получаю данные о пользователях, запустивших бот.

Статистика пользователей бота

2. Теперь попробую разослать сообщение пользователям бота. В настройках выбираю «Рассылка».

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

Рассылка пользователям бота

Выберу «Все пользователи» и введу такой текст «Сегодня скидка на рекламу 10%», затем нажимаю «Готово» и «Да». Все ок, рассылка прошла успешно, бот отправил статистику.

Проводим рассылку пользователям бота

А на второй аккаунт, с которого я запускал бот для проверки, пришло сообщение.

Сообщение из рассылки доставлено пользователям Телеграм-бота

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

Заключение

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

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

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

Успехов вам! До новых встреч в следующих статьях. С уважением, Дмитрий Толстой.

Источник: blogger-tolstoy.ru

Рейтинг
( Пока оценок нет )
Загрузка ...