Где разрабатывать telegram bot на python
Перейти к содержимому

Где разрабатывать telegram bot на python

  • автор:

Как написать Telegram-бота на Python: делаем ремайндер

Создаём простого бота-ремайндера в Telegram на языке Python, единственная задача которого — напоминать пользователю о важных делах.

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

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

Первый этап: подготовка проекта и развертывание окружения

Найдем в поиске Telegram BotFather — официального бота мессенджера, который создает другие боты и управляет ими. В интерфейсе выбираем /start, затем — /newbot, и следом задаем имя и адрес. В этой иструкции это будут Elbrus Reminder и elbrus_reminder_bot соответственно.

После этого BotFather пришлет сообщение с токеном и ссылкой на бот:

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

На время закроем Telegram и создадим на компьютере папку с именем проекта: например, reminder_bot. Откроем папку в среде разработки и создадим рабочий файл с понятным названием — bot.py.

Откроем терминал редактора кода и создадим для проекта новое окружение. В среде разработки с помощью команды python -m venv .venv создадим папку с окружением .venv .

Если окружение не активировалось автоматически, можно сделать это вручную, прописав путь к файлу активации в формате source .venv/bin/activate , где source — команда языка программирования Bash. Другой вариант — перезапустить среду разработки. Он работает для Visual Studio Code, но нужно предварительно принять предложение редактора привязать среду к папке проекта сразу после создания окружения.

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

Второй этап: подключаем библиотеки

Проект создан и окружение готово: пора переходить к написанию кода. По правилам хорошего тона в первую очередь через import добавляем несколько предустановленных библиотек Python. При создании бота нам пригодятся logging и time , которые отвечают за определение времени и логирование сообщений.

import time import logging 

Затем добавим асинхронную библиотеку aiogram, на основе которой будет работать бот. Она, например, определяет, какое сообщение пришло, как его нужно обработать и какие порты нужны. Сначала устанавливаем ее через терминал командой pip install aiogram , а в редакторе кода пишем следующее:

from aiogram import Bot, Dispatcher, executor, types 

Из этой библиотеки нам нужны только отдельные модули и классы — все ее возможности для создания базовой версии бота не пригодятся. Поэтому вместо одиночного import использована команда from <> import <> .

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

TOKEN = "здесьбудетваштокенот от BotFather" MSG = "Программировал ли ты сегодня, <>?" 

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

Теперь создадим экземпляр класса Bot , передав ему в качестве аргумента наш токен, и экземпляр класса Dispatcher (dp), который в качестве аргумента получит bot . В результате получаем связку объекта класса bot с ключем, который привязан к боту, и диспетчера, который привязан к этому боту:

bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot) 

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

@dp.message_handler(commands=['start']) 

Под декоратором прописываем функцию, которая будет обрабатывать команду /start и определяет логику, в соответствии с которой будет работать бот. Поскольку мы работаем с асинхронной библиотекой, функция тоже должна быть асинхронной. Для этого перед указанием def добавим ключевое слово async :

async def start_handler(message: types.Message): 

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

Создаем переменную и сохраняем в ней user id :

user_id = message.from_user.id 

Затем получаем из сообщения короткое и полное имя пользователя:

user_name = message.from_user.first_name user_full_name = message.from_user.full_name 

Для того, чтобы в логах отображалась информация о пользователе, передаем в виде текста ID и полное имя, а также используем возможности библиотеки time , чтобы определить время, когда писал пользователь:

logging.info(f'  ') 

Здесь отойдем в сторону и проверим корректность работы модуля time . Сделать это можно в терминале: для этого напишем import time , а затем — time.asctime

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

await message.reply(f"Привет, !") 

Ответить пользователю в боте можно несколькими способами — в данном случае используем reply. Выше в переменной MSG мы задали стандартное сообщение: «Программировал ли ты сегодня, <>?». Зададим частоту напоминаний: семь раз каждые семь суток (60х60х24 — количество секунд в одних сутках) с момента отправки команды /start боту от пользователя:

for i in range(7): await asyncio.sleep(60*60*24) 

Затем настроим отправку сообщения с указанием имени пользователя в этом же цикле:

await bot.send_message(user_id, MSG.format(user_name)) 

Третий этап: финал

Переходим к финальной части: в конце скрипта напишем несколько строк. Они могут показаться странными для новичка, но это общепринятая практика, к которой многие программисты прибегают при разработке. В этой строке мы проверяем, равна ли переменная __name__ строке «__main__» . Это условие всегда будет True, если мы запускаем этот файл как python-скрипт через терминал:

if __name__ == '__main__': 

Теперь делаем нашего бота доступным в сети:

executor.start_polling(dp) 

Сохраняем файл. Запускаем бота в терминале, открытом в папке проекта, с помощью команды python bot.py .

Вернемся в BotFather и перейдем по ссылке, которую получили вместе с токеном. Нажимаем «Начать» — готово, бот, написанный меньше, чем в 30 строк, работает.

Так выглядит его код целиком:

import time import logging import asyncio from aiogram import Bot, Dispatcher, executor, types TOKEN = "здесьбудетваштокенот@BotFather" MSG = "Программировал ли ты сегодня, <>?" logging.basicConfig(level=logging.INFO) bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot) @dp.message_handler(commands=["start"]) async def start_handler(message: types.Message): user_id = message.from_user.id user_name = message.from_user.first_name user_full_name = message.from_user.full_name logging.info(f'  ') await message.reply(f"Привет, !") for i in range(7): await asyncio.sleep(60*60*24) await bot.send_message(user_id, MSG.format(user_name)) if __name__ == "__main__": executor.start_polling(dp) 

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

Телеграм-боты на Python и AIOgram

Курс «Телеграм-боты на Python и AIOgram» знакомит интересующихся с тем, как разрабатывать telegram-ботов на языке Python с использованием асинхронной библиотеки AIOgram. В курсе рассмотрена актуальная 3-я версия библиотеки. Помимо рассмотрения Telegram Bot API и библиотеки aiogram, в курсе есть полезная информация о… Ещё

Средний уровень

Course cover

29 344 учащихся

Чему вы научитесь

  • Создавать и настраивать телеграм-ботов с помощью @BotFather
  • Взаимодействовать с Telegram Bot API посредством http-запросов
  • Настраивать IDE VS Code для работы с Python
  • Создавать виртуальное окружение для проектов на Python
  • Настраивать логирование в проекте
  • Правильно работать с импортами в многомодульных проектах
  • Разрабатывать телеграм-ботов с требуемым функционалом на Python с помощью асинхронной библиотеки AIOgram
  • Работать со встроейнной в aiogram машиной состояний
  • Обрабатывать ошибки, возникающие при работе ботов
  • Настраивать систему контроля версий Git и размещать проект на GitHub
  • Деплоить бота на удаленный сервер
  • Настраивать автодеплой бота на удаленный сервер
  • .

О курсе

На этом курсе вы научитесь создавать телеграм-ботов на Python с помощью продвинутой асихронной библиотеки aiogram актуальной 3-й версии. При этом вы познакомитесь со многими инструментами профессиональной разработки, которые помогут вам не только в создании телеграм-ботов.

Модули курса

  1. Общие сведения о телеграм-ботах
  2. Подготовка инструментов
  3. Git и GitHub
  4. Аннотации типов и логирование
  5. Telegram Bot API
  6. Асинхронность в Python
  7. Aiogram
  8. Первые телеграм-боты
  9. Структура проекта
  10. Взаимодействие с ботом
  11. Машина состояний (FSM)
  12. База данных
  13. Обработка ошибок бота
  14. Деплой бота на сервер
  15. Автодеплой
  16. Телеграм-бот с искусственным интеллектом

Когда-то подобного курса не хватало мне самому, поэтому он и появился. С целью облегчить начинающим python-разработчикам вход в тему разработки телеграм-ботов.

Для кого этот курс

Курс подойдет тем, кто уже знает синтаксис языка Python и нарешал достаточное количество учебных задач. Для тех, кто хочет двигаться дальше и понять как теперь абстрактные знания языка связать с реальностью на примере телеграм-ботов. Кому хочется разобраться как вообще вести проекты на Python, начиная от того где писать код и где его хранить и заканчивая тем, как заставить проект работать на удаленном сервере 24/7

Начальные требования

Знание синтаксиса Python и основ программирования, включая ООП.

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

Разработка Telegram бота на Python

Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Требуется разработать многопользовательского Telegram фитнес-бота на Python

Подробное ТЗ во прикрепленном файле.

7 лет назад
36 лет Россия
15 лет в сервисе
7 лет назад
Выбранный исполнитель
29 лет Россия
13 лет в сервисе
5 лет назад
7 лет назад
Отзыв заказчика
Задачу по созданию фитнесс бота для Телеграмм выполнил в срок, и хорошо. Рекомендую.
Отзыв фрилансера
Качественное ТЗ. Приятно работать с Игорем.
Похожие заказы

Аппроксимация GPS данных real time

Нужен человек для реализации части проекта. Показывать результаты продвижения каждые 2-3 дня. Если вопросы есть задавайте тут или в скайп. Расчёт — western union. https://docs.google.com/document/d/1oGovRwCoqNkmluQd_CzgERwhfm-iuUitweHSP4JKPmM/edit?usp=drive_web

7 лет назад

Скрипт спидтеста на PHP+JS(JQuery).

Скрипт спидтеста на PHP+JS(JQuery). Требования: 1. Приятный внешний легко масштабируемый интерфейс. Изображения в SVG. 2. Скрипт должен замерять Download и Upload с удаленного сервера. 3. На клиентской стороне должна быть проверка поддержки Flash в браузере. Если .

Прикладное ПО 1 исполнитель
7 лет назад

Реализовать интерфейс приложения «Игры» на С++/Qt5.6

Необходимо реализовать интерфейс приложения «Игры» на С++/Qt5.6.1-1 под Win7 и выше. ТЗ во вложении
7 лет назад

Разработка прил. Windows работающее с VK API, + разработка сайта.

Для начала коротко: Нужный мне сервис представляет из себя следущее: Логин и пароль ВК вписывается в windows приложение (которое связано с Standalon приложением ВК), идет авторизация через лог и пароль (получая токен) именно в тот момент, когда пользователь .

7 лет назад

Сделать ASO для мобильного приложения

Нужно сделать ASO для мобильного приложения, планирую запуск в Новой Зеландии
7 лет назад

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

Нужна простенькая программа способная выполнять следующие задачи: 1. Есть папка в которой расположены картинки формата jpg, png. 2. Есть список ключей (всего будет около 40-70 ключей, должна быть возможность добавлять этим ключи и менять существующие), которые и .

Прикладное ПО 1 исполнитель
7 лет назад

Шаблон почтового клиента

Создать макет программы почтового клиента. Выслать скрин для оценки. Смысл таков 1 скрин: 3 черточки — это меню ниже иконки — это почта, где красный кружочек это активная почта и в кружочке высвечивается кол-во писем или просто показано, что эта .

Прикладное ПО 1 исполнитель
7 лет назад

Мессенджер на C#

Есть немного не доработанный мессенджер написанный на Java скрипт. Требуется переписать его под C# в Юнити 3D. Установить на сервер и протестировать Оплата поэтапная

7 лет назад

Программа, реализующая описанный алгоритм

Программа должна реализовывать алгоритм, описывающий «методику фор- мирования множества объектов защиты и оценки защитного ресурса» (да-лее — методика).Алгоритм представлен в описании.Методика описывает использование сети связи (представлена графом) раз-личными группами абонентов. Каждая группа абонентов предъявляет своитребования к .

7 лет назад

Помощь нужна в установке удаленно рабочей программы 1с УТ 11

Помощь нужна в установке удаленно рабочей программы 1с УТ 11 в которую выгрузить базу (есть файл .dt с базой, которую сформировали в 1с Управление торговлей 11) сконфигурированную под выгрузку от 5 поставщиков. Указывайте стоимость и сроки, .

Питоном по телеграму! Пишем пять простых Telegram-ботов на Python

В этой статье мы реали­зуем прос­той, но край­не полез­ный про­ект на Python — бота для Telegram. Боты — это неболь­шие скрип­ты, которые могут вза­имо­дей­ство­вать с API, что­бы получать сооб­щения от поль­зовате­ля и отправ­лять информа­цию в раз­ные чаты и каналы.

Python для новичков

Ес­ли ты сов­сем не ори­енти­руешь­ся в Python, то отличным началом будет проч­тение трех ввод­ных ста­тей, которые я пуб­ликовал в «Хакере» этим летом, либо посеще­ние кур­са «Python для нович­ков», который я нач­ну вес­ти для читате­лей «Хакера» уже сов­сем ско­ро — 30 нояб­ря.

  • Python с абсо­лют­ного нуля. Учим­ся кодить без скуч­ных кни­жек
  • Python с абсо­лют­ного нуля. Учим­ся работать со стро­ками, фай­лами и интерне­том
  • Python с абсо­лют­ного нуля. Работа­ем с ОС, изу­чаем регуляр­ные выраже­ния и фун­кции

Что­бы соз­дать бота, нам нуж­но дать ему наз­вание, адрес и получить токен — стро­ку, которая будет однознач­но иден­тифици­ровать нашего бота для сер­веров Telegram. Зай­дем в Telegram под сво­им акка­унтом и откро­ем «отца всех ботов», BotFather.

Жмем кноп­ку «Запус­тить» (или отпра­вим / start ), в ответ BotFather приш­лет нам спи­сок дос­тупных команд:

  • / newbot — соз­дать нового бота;
  • / mybots — редак­тировать ваших ботов;
  • / setname — сме­нить имя бота;
  • / setdescription — изме­нить опи­сание бота;
  • / setabouttext — изме­нить информа­цию о боте;
  • / setuserpic — изме­нить фото ава­тар­ки бота;
  • / setcommands — изме­нить спи­сок команд бота;
  • / deletebot — уда­лить бота.

От­пра­вим бате‑боту коман­ду / newbot , что­бы соз­дать нового бота. В ответ он поп­росит ввес­ти имя будуще­го бота, его мож­но писать на рус­ском. Пос­ле вво­да име­ни нуж­но будет отпра­вить адрес бота, при­чем он дол­жен закан­чивать­ся на сло­во bot. Нап­ример, xakepbot или xakep_bot . Если адрес будет уже кем‑то занят, BotFather нач­нет изви­нять­ся и про­сить при­думать что‑нибудь дру­гое.

Ког­да мы наконец най­дем сво­бод­ный и кра­сивый адрес для нашего бота, в ответ получим сооб­щение, в котором пос­ле фра­зы Use this token to access the HTTP API будет написа­на стро­ка из букв и цифр — это и есть необ­ходимый нам токен. Сох­раним ее где‑нибудь на сво­ем компь­юте­ре, что­бы потом исполь­зовать в скрип­те бота.

Для вза­имо­дей­ствия с Telegram API есть нес­коль­ко готовых модулей. Самый прос­той из них — Telebot. Что­бы уста­новить его, набери

pip install pytelegrambotapi

В Linux, воз­можно, понадо­бит­ся написать pip3 вмес­то pip , что­бы ука­зать, что мы хотим работать с треть­ей вер­сией Python.

Эхо-бот

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *