Добавить в корзинуПозвонить
Найти в Дзене

Как написать Telegram-бота на Python с нуля

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

Telegram-боты до сих пор остаются одним из самых удобных и востребованных проектов для разработчиков. Они помогают автоматизировать рутину, делать полезные сервисы, управлять устройствами или просто развлекать людей. И самое приятное: написать рабочего бота можно буквально за вечер.

Python остаётся лучшим выбором для ботов благодаря простоте и мощным библиотекам. Сейчас большинство выбирает aiogram 3.x - это современный и очень быстрый асинхронный фреймворк.

Пошаговый гайд

1 Подготовка

Сначала создайте бота у @BotFather в Telegram. Получите токен - это ваш главный ключ.

Создайте проект:

bash

mkdir my_telegram_bot

cd my_telegram_bot

uv venv

uv pip install aiogram[fast] python-dotenv

2 Базовая структура бота

Создайте файл bot.py:

python

import asyncio

from aiogram import Bot, Dispatcher

from aiogram.filters import Command

from aiogram.types import Message

from dotenv import load_dotenv

import os

load_dotenv()

TOKEN = os.getenv("BOT_TOKEN")

bot = Bot(token=TOKEN)

dp = Dispatcher()

@dp.message(Command("start"))

async def start(message: Message):

   await message.answer(

     "Привет! Я бот, написанный на Python.\n"

     "Напиши /help, чтобы увидеть, что я умею."

   )

@dp.message(Command("help"))

async def help_command(message: Message):

   await message.answer("Пока доступны

команды: /start и /help")

async def main():

   await dp.start_polling(bot)

if __name__ == "__main__":

   asyncio.run(main())

3 Работа с .env

Создайте файл .env и добавьте туда:

BOT_TOKEN=123456:ABC-DEF...

4 Полезные возможности, которые стоит добавить сразу

. Обработка любых текстовых сообщений:

python

@dp.message()

async def echo(message: Message):

   await message.answer(f"Вы написали:

{message.text}")

. Кнопки (Inline и Reply):

. Работа с базой данных (SQLite или PostgreSQL)

. Отправка фото, документов, локаций

. Планировщик задач (aiogram + APScheduler)

. Вебхуки (для продакшена вместо polling)

5 Рекомендации по хорошему боту

. Всегда делайте обработку ошибок

. Используйте Finite State Machine (FSM) для многошаговых диалогов

. Добавьте логирование

. Для продакшена запускайте через systemd или Docker

. Не храните токен в коде

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

. Бот для мониторинга серверов и домашнего оборудования

. Умный помощник для заметок и задач

. Бот, который управляет вашим homelab

. Парсер цен или уведомления о чём-то важном

. Личный помощник по разработке (напоминания, сниппеты)

Telegram API сейчас очень удобный, а aiogram позволяет писать чистый и масштабируемый код. Даже если вы только начинаете с Python, такой проект отлично прокачивает навыки асинхронного программирования, работы с API и архитектурой приложений.

Что дальше?

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

А вы писали Telegram-ботов?

На чём делали и для каких задач? Расскажите в комментариях — будет интересно почитать и, возможно, взять идеи для следующих гайдов.