Як створити бота в Telegram на Python менш ніж за 10 хвилин

Останнє оновлення: 28/01/2026
Автор: Ісаак
  • Telegram-бот — це застосунок, який взаємодіє з користувачами через Bot API, ідеально підходить для автоматизації завдань, надання підтримки та розповсюдження контенту.
  • з Python А за допомогою бібліотеки python-telegram-bot ви можете створити функціонального бота за лічені хвилини, починаючи з простої команди /start та розширюючи її за допомогою меню та статусів.
  • Архітектура базується на отриманні оновлень через опитування або вебхуки, що дозволяє розгортати бота на хмарних сервісах, таких як AWS, щоб він був доступний цілодобово.
  • Застосування належних практик безпеки, взаємодії з користувачем та моніторингу гарантує надійність, масштабованість та корисність бота в довгостроковій перспективі.

Бот Telegram на Python

Якщо ви щодня користуєтеся Telegram, ви, мабуть, не раз думали, як чудово було б мати бота, який виконує завдання за вас. Нагадування про ліки, відповіді на поширені запитання або автоматичні сповіщення Це лише кілька прикладів того, що можна автоматизувати, не завдаючи шкоди. Гарна новина полягає в тому, що за допомогою Python ви можете запустити робочого бота за лічені хвилини.

З цієї статті ви дізнаєтесь Як створити бота в Telegram на Python менш ніж за 10 хвилинПочинаючи з нуля та розуміючи, що ви робите на кожному кроці. Ми розглянемо все: від створення бота за допомогою BotFather, встановлення бібліотек, реальних прикладів коду до варіантів його розгортання в хмарі (наприклад, AWS або безкоштовні сервіси), щоб вам не довелося тримати комп'ютер увімкненим цілий день.

Що таке Telegram-бот і чому варто його створити?

Telegram-бот, по суті, це програма, яка працює в Telegram та відповідає на повідомлення дотримуючись правил, які ви визначаєте в коді. Це не користувач-людина, а «спеціальний обліковий запис», керований розробленим вами сервером, зазвичай розміщеним на сервері або хмарному сервісі.

Ці боти можуть бути як простими, як система, яка завжди відповідає одним і тим самим повідомленням, так і складними, як помічник з штучний інтелект що розуміє природну мовукерувати платежами, розмовляти кількома мовами та підключатися до зовнішніх сервісів (API, бази даних, системи IoTтощо). Telegram пропонує API ботів відкритий та дуже добре документований що значно сприяє розвитку.

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

З технічної точки зору, бот спілкується з Telegram за допомогою HTTPS-запити до Bot APIВи пишете код (наприклад, на Python), Telegram надає вам секретний токен, і звідти все робиться шляхом обміну JSON між вашими скриптами та серверами Telegram.

Приклад бота в Telegram

Реальні випадки використання: для чого сьогодні використовуються боти Telegram

Перш ніж ми почнемо кодувати, добре було б чітко визначитися Які проблеми можна вирішити за допомогою Telegram-бота?Це допоможе вам краще розробити логіку вашого бота та, перш за все, гарантувати, що він не залишиться просто експериментом.

Багато компаній використовують ботів як перший рівень обслуговування клієнтівБот може відповідати на поширені запитання, перевіряти статус замовлення, керувати бронюваннями або надсилати персоналізовані посилання для допомоги. Якщо щось ускладнюється, він може передати розмову людині, але спочатку це знімає з вас багато монотонної роботи.

Ще одне дуже поширене застосування - це поширення контентуІснують боти, які читають RSS-канали, блоги, канали YouTube або соціальні мережі та надсилають новини, публікації чи відео користувачам чи каналам у режимі реального часу. Це ідеально підходить для медіа-ресурсів, творців контенту або будь-кого, хто хоче централізувати інформацію, не перемикаючись між програмами.

На особистому рівні, боти продуктивності мають вирішальне значення: нагадування, списки справ, сповіщення про події або розумні будильникиБот може розуміти фрази на кшталт «Нагадай мені про мої ліки завтра о 8» та планувати сповіщення у відповідний час, не відкриваючи окремий додаток.

Також є боти, орієнтовані на дозвілля та корисність: завантаження мультимедійного вмісту (завжди дотримуючись авторських прав), туристичні менеджери, які рекомендують авіаквитки та готеліБоти для перегляду карт, управління особистими фінансами, отримання сповіщень від промислових систем або моніторингу серверів тощо. Поєднання цілодобової доступності та простоти використання робить діапазон можливостей величезним.

Як працює архітектура бота Telegram

Щоб повністю зрозуміти, що ви збираєтеся програмувати, корисно чітко розуміти базову архітектуру. З одного боку, є Telegram з його серверами та Bot APIА з іншого боку, є ваш застосунок (код на Python, Node.js або будь-якій іншій мові, яку ви оберете), який десь працює: ваш ПК, віртуальна машина, безсерверний сервіс, контейнер тощо.

Коли користувач надсилає повідомлення вашому боту, Telegram генерує «оновлення» у форматі JSONЦе оновлення надходить до вашої програми двома можливими способами: або ви шукатимете його за допомогою опитування за допомогою методу getUpdatesАбо Telegram надсилає його вам автоматично через Вебхук HTTPS які ви раніше налаштували.

У режимі опитування ваш сценарій Він періодично запитує у Telegram, чи є нові повідомлення. Це ідеально підходить для локальний розвиток та швидке тестуванняТому що вам не потрібно підключати комп'ютер до Інтернету чи налаштовувати сертифікати. Ви просто запускаєте скрипт, і все готово.

  Виявлення та виправлення помилок кодування (UTF-8 проти ANSI) у Windows

З іншого боку, в режимі вебхука Telegram надсилає оновлення безпосередньо на HTTPS-URL, який ви контролюєте. Це найкраще підходить для виробничих середовищОскільки ви зменшуєте затримку, вам не потрібно робити постійних запитів, і ви можете масштабувати застосунок за веб-сервером, проксі-сервером або балансувальником навантаження. Тут вам абсолютно потрібна публічна URL-адреса та дійсний SSL-сертифікат.

В обох випадках ваш бот отримує JSON, обробляє його відповідно до визначеної вами логіки та відповідає, використовуючи методи Bot API, такі як надіслати повідомлення, надіслати фотографію, відповісти на зворотний виклик та багато інших. Високорівневі бібліотеки (такі як python-telegram-bot або Telegraf у Node.js) інкапсулюють ці деталі, тому вам потрібно працювати лише з функціями та обробниками. Команди.

Архітектура бота Telegram

Передумови для створення бота на Python за кілька хвилин

Щоб налаштувати свого першого бота, вам не потрібне величезне корпоративне середовище, але вам знадобиться деяке дуже чіткі мінімальні вимогиЇх підготовка заощадить ваш час і допоможе уникнути дурних помилок під час налаштування.

Основи полягають у тому, щоб мати Python 3 встановлено на вашій системіБудь-якої сучасної версії (3.8 і пізніших) зазвичай більш ніж достатньо. Також рекомендується мати pip для встановлення пакетів, хоча він вже включений до Python у більшості сучасних дистрибутивів.

Наступний крок – встановити бібліотеку, яка спрощує роботу з Bot API. У цьому випадку ми використовуватимемо python-telegram-бот, один з найпопулярніших та найпідтримуваніших плагінів спільноти Python. Щоб встановити його, просто виконайте таку команду в термінал:

pip3 install python-telegram-bot

Окрім технічного налаштування, вам потрібно зареєструвати самого бота в Telegram. Для цього вам знадобиться @BotFatherОфіційний бот Telegram діє як панель керування для всіх ваших ботів. Звідти ви створите бота, назвете його та отримаєте токен доступу, який буде ключем для вашого скрипта для керування цим обліковим записом.

Створіть бота Telegram за допомогою BotFather

Початкова точка завжди одна й та сама: Зареєструйте бота та отримайте токенБез цього токена ваш код не зможе взаємодіяти з API бота або надсилати повідомлення будь-кому, оскільки саме він унікально ідентифікує вашого бота.

Відкрийте Telegram та знайдіть користувача @BotFatherЦе офіційний, перевірений бот, тож ви не помилитеся. Щойно він у вас з'явиться, почніть з ним чат і введіть команду. /newbotBotFather проведе вас крок за кроком.

Спочатку вам потрібно буде вказати «дружня» назва для вашого ботаОсь що побачать користувачі (наприклад, «Нагадування про ліки»). Потім вас попросять ввести ім’я користувача, яке має бути унікальним і закінчуватися на bot, як, наприклад recordatorio_meds_bot чи щось подібне.

Після завершення процесу BotFather поверне Токен API у форматі, подібному до цього: 123456789:ABC-DEF…Цей токен є священним: ставтеся до нього як до дуже надійного пароля. Не публікуйте його на GitHub, не копіюйте його на форуми, а якщо ви коли-небудь підозрюєте, що його було витікено, ви можете створити його з BotFather за допомогою команд ротації токенів.

Таким чином, у вас вже є все необхідне: обліковий запис бота Telegram та облікові дані для керування ним з вашого коду PythonТепер час підготувати невеликий сценарій, який з'єднає частини.

Встановлення python-telegram-bot та підготовка середовища

З токеном на руках, наступним кроком є ​​​​переконатися, що ваше середовище Python готове до роботи з Telegram API. Як ми вже згадували, найзручнішим варіантом є використання бібліотеки python-telegram-бот, який пропонує вам високорівневі класи та функції для визначення команд, керування розмовами та надсилання повідомлень.

Якщо ви ще цього не зробили, встановіть бібліотеку, виконавши таку команду у вашому терміналі або консолі:

pip3 install python-telegram-bot

У багатьох системах, якщо у вас лише одна версія Python, це також може працювати просто:

pip install python-telegram-bot

Завдяки цьому ви тепер можете створити файл Python, наприклад bot_telegram.pyТут ви почнете писати код свого бота. Ви можете використовувати будь-який текстовий редактор або IDE: VS Code, PyCharm, Sublime Text, навіть Блокнот Якщо хочете. Важливий не інструмент, а зміст скрипта.

Мінімальна структура бота з python-telegram-bot складається з імпорту необхідних класів, Налаштуйте програму за допомогою свого токена та визначити принаймні одну функцію-обробник для команди /startякий зазвичай є шлюзом до будь-якого бота.

Перший приклад: мінімальний бот з командою /start

Давайте розглянемо практичний приклад дуже простого бота, який відповідає базовим повідомленням, коли користувач надсилає команду /startЦе дозволить вам перевірити, чи все підключено належним чином: правильний токен, встановлена ​​бібліотека та чи працює зв'язок з Telegram.

У вашому файлі bot_telegram.pyВи можете створити сучасну версію на основі поточної архітектури python-telegram-bot (асинхронної) з кодом, подібним до цього, адаптованим до новішого стилю:

from telegram.ext import ApplicationBuilder, CommandHandler

асинхронний def старт(оновлення, контекст):
await update.message.reply_text("Вітаю! Я ваш приклад бота в Telegram.")

  Як вирішити проблеми з повільністю на Smart TV

ТОКЕН = "ВАШ_ТОКЕН_ТУТ"

def main():
app = ApplicationBuilder().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()

якщо __name__ == "__основна__":
main ()

У цьому уривку, ApplicationBuilder створює головний додаток-бота, з яким ви пов'язуєте обробник для команди /start. Функція start Він відповідає за відповідь користувачеві простим текстовим повідомленням, і run_polling() Активуйте режим тривалого опитування, щоб бот постійно запитував у Telegram нові оновлення.

Щоб запустити його, просто запустіть наступну команду в терміналі:

python3 bot_telegram.py

Якщо все працює правильно, ви побачите консольні повідомлення, які вказують на активність бота. Відкрийте Telegram, знайдіть свого бота, використовуючи ім'я користувача, яке ви йому призначили в BotFather, відкрийте чат і надішліть повідомлення. /start. Ви маєте отримати вітальне повідомлення які ви визначили в коді.

Зробити бота кориснішим: меню, статуси та розмови

Починаючи з простого "привіт, світе", найцікавіше полягає в додаванні Більш просунута логіка: меню, кнопки, різні схеми розмови та управління станом. Саме тут і проявляється справжня сила python-telegram-bot, завдяки таким інструментам, як ReplyKeyboardMarkup, InlineKeyboardMarkup або ConversationHandler.

Припустимо, ви хочете створити бота для повідомляти про інциденти або катастрофиПодібно до проектів на кшталт DisAtBot, ідея полягає у відображенні початкового меню з такими опціями, як «Надіслати звіт», «Переглянути карту», ​​«FAQ» або «Про нас». Для цього можна визначити власну клавіатуру з кнопками, які користувач може натискати, замість того, щоб змушувати його вводити текст вручну.

Використовуючи клавіатуру швидкого реагування, ви визначаєте список списків у Python, де кожен підсписок представляє рядок кнопок. Потім ви використовуєте ReplyKeyboardMarkup для створення клавіатури і ви видаєте це за аргумент reply_text або подібні методи, щоб Telegram відображав ці кнопки над полем для введення тексту.

Цей метод ідеально підходить, коли вам потрібні чітко керовані робочі процеси, такі як покрокові форми, анкети або критичні процеси де ви не хочете, щоб користувач робив помилки під час друку. Крім того, ви можете поєднати його з кінцевим автоматом, використовуючи ConversationHandlerде кожен стан потоку пов'язаний з одним або кількома різними обробниками (наприклад, вибір мови, вибір типу звіту, запит геолокації, підтвердження даних тощо).

Бібліотека дозволяє визначити словник станів, де кожен ключ є цілим числом (ідентифікатором стану), а значення — списком обробників, які активуються в цей момент. Таким чином, Ви зберігаєте контекст між повідомленнями І ви можете створювати складні діалоги, не використовуючи всюди оператори if/else.

Практичний приклад: бот-нагадування про ліки (через день).

Дуже конкретний і корисний приклад – це пам'ятайте про прийом ліківчергуючи прийом ліків опівдні та під час вечері, через день. Початковий підхід до перевірки парності чи непарності календарного дня здається простим, але він порушується, коли ви змінюєте місяці (30, 31 день, лютий, високосні роки тощо).

Найнадійніший спосіб вирішити цю проблему — покладатися не на день місяця, а на фіксована дата відлікуНаприклад, ви можете десь зберегти (файл, база даних або навіть постійну змінну на сервері) дату першого дня прийому ліків і визначити цей день як «день прийому полудня». Звідти ви можете обчислити, скільки днів минуло з цієї початкової дати.

Маючи поточну дату та дату початку, ви можете обчислити різницю в днях, використовуючи функції зі стандартної бібліотеки Python (модуль datetimeТоді ви робите за модулем 2 (залишок при діленні на 2)Якщо залишок дорівнює 0, ви отримуєте один тип прийому їжі (наприклад, полуденок); якщо залишок дорівнює 1, ви отримуєте інший (наприклад, вечерю). Оскільки розрахунок базується на загальній кількості днів, що минули, зміна місяця та кількість днів у кожному місяці на вас не впливають.

Ваш бот може запускати невеликий скрипт, який щодня у певний час обчислює, обідня це чи вечерня, і надсилає вам відповідне повідомлення. Щоб запланувати автоматичну надсилку, ви можете інтегрувати бібліотеки планування в Python, такі як розклад або апспланувальник, або покладатися на зовнішні системи, такі як cron-завдання, заплановані лямбда-функції чи заплановані завдання з сервісу, де розміщено бота.

Де розмістити свого бота: безкоштовні та хмарні варіанти

Дуже поширене питання: Чи потрібно тримати комп'ютер увімкненим цілий день, щоб бот працював? Відповідь – ні, якщо ви розгортаєте його на якомусь хмарному сервісі або онлайн-платформі, яка забезпечує роботу цього процесу.

Послуги на зразок PythonAnywhere дозволяє запускати скрипти Python у хмаріЦі плани можуть бути гарним варіантом для тестування або простих ботів. Однак безкоштовні плани часто мають обмеження щодо безперервного часу роботи, вихідних з’єднань або доступності. Важливо переглянути їхні умови та положення, щоб переконатися, що ваш бот залишатиметься активним без постійного моніторингу.

Якщо ви хочете щось більш надійне, але також з дуже економічними опціями (або майже безкоштовне при невеликих обсягах), дуже цікавою альтернативою є використання AWS з безсерверним підходомНаприклад, ви можете налаштувати свого бота за допомогою вебхука, що обслуговується AWS Lambda та доступний через Amazon API Gateway. У цій моделі ваш код виконується лише тоді, коли Telegram надсилає оновлення, і вам не потрібно турбуватися про роботу сервера. Якщо вам потрібен додатковий захист, розгляньте такі сервіси, як Cloudflare.

  Легкі контейнери з Podman у Linux: Практичний посібник

У цьому підході ви визначаєте лямбда-функцію, яка отримує JSON, що надсилається Telegram на ваш вебхук, перевіряє секретний токен, обробляє повідомлення та відповідає, викликаючи Bot API через HTTPS-запити. Вартість низького трафіку зазвичай дуже низькаІ вам не потрібно керувати машинами, патчами чи перезавантаженнями.

Для більших ботів, з більшим трафіком або важчими залежностями, ви можете вибрати контейнери в ECS Fargate разом із балансувальником навантаження додатківУ цьому випадку ви запускаєте свого бота (наприклад, застосунок FastAPI, інтегрований з python-telegram-bot у режимі webhook) всередині контейнера Docker, а ALB отримує HTTPS-запити та перенаправляє їх до ваших завдань Fargate. Це складніше, але також дуже масштабовано та гнучко.

Довге опитування проти вебхуків: що обрати і коли

Telegram підтримує два взаємовиключні підходи до отримання оновлень: getUpdates (опитування) або вебхукиВи не можете використовувати обидва одночасно; або ваш бот запитує Telegram, або Telegram надсилає оновлення на ваш сервер.

El тривале опитування Це найпростіший спосіб почати. ​​Ваш код періодично викликає getUpdatesЦе вказує на період очікування, протягом якого з'єднання залишається відкритим до отримання нових повідомлень. Це ідеально підходить для локальної розробки, оскільки ви можете запускати бота на своєму ноутбуці, не відкриваючи порти зовнішньому світу, а бібліотека python-telegram-bot обробляє ці деталі за допомогою таких методів, як run_polling().

L веб-гачкиЗ іншого боку, вони є опцією, розробленою для продакшену. Ви налаштовуєте HTTPS-URL (наприклад, кінцеву точку в API Gateway, сервер Flask/FastAPI або маршрут у Node-фреймворку, такому як Express або Telegraf) та викликаєте метод. setWebhook з API бота, вказавши цю URL-адресу. З цього моменту кожне оновлення, яке отримує Telegram, надсилатиметься як POST-запит у форматі JSON до вашої кінцевої точки.

За допомогою вебхуків ви можете додати додатковий рівень безпеки за допомогою параметра secret_tokenПід час визначення вебхука ви передаєте йому секретний токен, а потім на своєму сервері перевіряєте, чи заголовок X-Telegram-Bot-Api-Secret-Token Це відповідає очікуваному значенню. Таким чином, ви приймаєте лише запити, які фактично надходять від Telegram.

У будь-якому випадку, пам’ятайте, що доки вебхук налаштовано, Ви не зможете використовувати getUpdatesЯкщо ви хочете повернутися до режиму опитування, спочатку потрібно вимкнути вебхук, видаливши його або встановивши для нього значення порожнє, а потім ви можете запустити свого бота локально за допомогою run_polling() без конфлікту.

Найкращі практики безпеки, UX та обслуговування

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

Щодо безпеки, критичним моментом є захистити токен ботаЗавжди зберігайте його у змінних середовища або менеджерах секретів (таких як AWS Secrets Manager) та уникайте жорсткого кодування його у вихідному коді, особливо якщо цей код буде знаходитися у публічних репозиторіях. Якщо ви підозрюєте, що токен міг бути витік, негайно перегенеруйте його в BotFather.

Якщо ви використовуєте вебхуки, скористайтеся перевагами secret_token та завжди перевіряти заголовок який надсилає Telegram. Аналогічно, обмежте кількість портів, що підлягають впливу (таких як 443, 80, 88, 8443, які Telegram підтримує для вебхуків) та налаштуйте правила брандмауера або групи безпеки вашого постачальника хмарних послуг, щоб вони приймали лише необхідний трафік.

З точки зору користувацького досвіду, важливо, щоб ваш бот Використовуйте чіткі команди, пояснювальні повідомлення та зручну обробку помилок.Якщо щось піде не так, не залишайте користувача в повній мовчанці; надішліть повідомлення про те, що у вас виникли проблеми, і, якщо можливо, запропонуйте, що можна спробувати. Кнопки, користувацькі клавіатури та добре розроблені меню значно пришвидшують взаємодію.

Нарешті, рекомендується моніторинг продуктивності та реєстрація помилокСкористайтеся перевагами систем logs від вашого постачальника (наприклад, CloudWatch в AWS) для виявлення винятків, повільного часу відгуку або піків трафіку. Ви також можете збирати відгуки від самих користувачів за допомогою таких команд, як /feedback або цільові опитування для покращення найчастіше використовуваних функцій.

З огляду на все вищесказане, налаштування Telegram-бота на Python менш ніж за 10 хвилин – це вже не магія, а зрозумілий процес: Ви реєструєте бота в BotFather, встановлюєте python-telegram-bot, пишете невеликий скрипт з /start, обираєте між опитуванням чи вебхуком і вирішуєте, де його розмістити.Звідти ви можете додавати шари: меню, статуси, інтеграції із зовнішніми API або розумні нагадування, такі як нагадування про ліки, доки не отримаєте справді корисного помічника, адаптованого до вашого повсякденного життя.

Плануйте повідомлення в Telegram-4
Пов'язана стаття:
Як планувати повідомлення в Telegram: повне керівництво з усіма хитрощами