Сделай своего Telegram-бота за вечер
Бот в Telegram — это не магия и не работа на год. За один вечер ты можешь собрать программу, которая отвечает на сообщения, и показать её друзьям прямо в их телефонах.
Сегодня вечером твой телефон лежит в кармане у друга, а на экране всплывает: «Привет! Я твой первый бот». Друг пишет «а ты кто?» — и аккаунт отвечает ему сам, без тебя. Это не дорогое приложение, не год за учебниками и не чужая магия. Рабочего Telegram-бота реально собрать за один вечер штук на тридцать строк кода — и сейчас я проведу тебя за руку от пустого экрана до живого бота.
Что вообще такое «бот»
Бот — это обычная программа, которая прикидывается собеседником в мессенджере. У него есть имя, аватарка, он появляется в чате как живой человек — но за всеми его ответами стоит код, который ты напишешь.
Когда кто-то отправляет боту сообщение, Telegram не несёт его «в бота» напрямую. Telegram кладёт это сообщение к себе на сервер и говорит: «Эй, программа, тут тебе написали — забирай». Твоя программа забирает сообщение, думает, что ответить, и отдаёт ответ обратно Telegram. А Telegram уже доставляет его пользователю. Получается почтальон посередине: ты с пользователем напрямую не видитесь, всё идёт через него.
Вот это «общение программы с Telegram» и есть API (читается «эй-пи-ай»). Если совсем на пальцах — это меню в кафе. Ты не лезешь на кухню сам и не учишься готовить, а выбираешь из списка готовых блюд: «отправить сообщение», «прислать картинку», «показать кнопки». Telegram заранее договорился, что он умеет делать, а ты это просто заказываешь из кода — словами, которые он понимает.
Шаг 1. Получаем токен у @BotFather
Любой бот начинается с регистрации. И регистрирует ботов... другой бот. Его зовут BotFather — это официальный бот Telegram, который выдаёт «паспорта» новым ботам.
- Открой Telegram и в поиске вбей
@BotFather. Выбирай того, у кого синяя галочка, — это официальный. - Нажми «Запустить» (Start) и отправь команду
/newbot. - BotFather спросит имя бота — это то, что увидят люди в чате. Например, «Напоминалка 9Б».
- Потом он попросит username — уникальный адрес, который обязательно заканчивается на
bot. Например,klass9b_reminder_bot. Если такой уже занят, придумай другой — BotFather честно скажет, свободен ли он. - Готово! BotFather пришлёт тебе длинную строку вроде
8123456789:AAH...xYz. Это и есть токен.
Токен — это ключ от твоего бота, как пароль от аккаунта. Кто знает токен — тот управляет ботом и может отправлять сообщения от его имени. Поэтому правило номер один: никому его не показывай и не выкладывай в скриншотах и на GitHub. Если случайно «засветил» — открой у BotFather меню своего бота (/mybots → API Token → Revoke current token). Он выдаст новый токен, а старый сразу перестанет работать.
Шаг 2. Готовим Python на компьютере
Важный момент: бот живёт не в браузере, а на компьютере, где запущен Python. Пока программа работает — бот отвечает. Закрыл программу или выключил ноут — бот «уснул» и молчит. (Чтобы он работал круглосуточно, даже когда ты спишь, нужен отдельный сервер в интернете, но это уже следующая серия.)
Тебе понадобится установленный Python (бери свежую версию с сайта python.org) и одна библиотека — aiogram. Это набор готовых инструментов, который прячет всю возню с API за удобными командами. Ставится она одной строкой в терминале:
pip install aiogram
Библиотека — это как набор LEGO: кто-то уже отлил все детали, а ты собираешь из них своё. Без aiogram пришлось бы вручную писать запросы к серверам Telegram, разбирать ответы по буквам и следить за кучей мелочей — скучно и долго. С ней — пара команд, и готово.
Шаг 3. Минимальный бот целиком
А теперь — весь бот. Да, целиком, вот столько кода. Создай файл bot.py и вставь это, подставив свой токен вместо подсказки:
import asyncio
from aiogram import Bot, Dispatcher
from aiogram.types import Message
from aiogram.filters import Command
bot = Bot(token="СЮДА_ТВОЙ_ТОКЕН")
dp = Dispatcher()
# Срабатывает на команду /start
@dp.message(Command("start"))
async def start(message: Message):
await message.answer("Привет! Я твой первый бот. Напиши мне что-нибудь.")
# Срабатывает на любое обычное сообщение
@dp.message()
async def echo(message: Message):
await message.answer(f"Ты написал: {message.text}")
async def main():
await dp.start_polling(bot)
asyncio.run(main())
Разберём по кусочкам, без занудства:
bot— это сам бот, который знает свой токен. Через него отправляются ответы.@dp.message(Command("start"))— строчка-«ярлык» над функцией. Она говорит: «функцию ниже вызывай, когда придёт команда/start». Такие ярлыки называют обработчиками (handlers) — они ловят события и решают, что делать.message.answer(...)— это и есть «заказ из меню API»: отправь ответ туда же, откуда пришло сообщение.- Второй обработчик без фильтра ловит вообще всё подряд и работает как эхо в горах — повторяет, что ты написал.
start_polling— режим, в котором бот сам постоянно теребит Telegram: «ничего новенького не написали? а сейчас? а сейчас?» — и так по кругу, пока программа запущена.
Порядок обработчиков важен: Python проверяет их сверху вниз и берёт первый подходящий. Поэтому /start стоит выше эхо — иначе всеядное эхо перехватывало бы и команды тоже.
Запусти файл командой python bot.py в терминале, найди своего бота в Telegram по username, нажми Start — и он ответит. Поздравляю, ты только что оживил программу.
Что сделать дальше: идеи ботов
Эхо — это весело ровно одну минуту. Дальше начинается самое интересное. Вот идеи, которые реально полезны и при этом по силам новичку:
- Напоминалка. Пишешь «напомни про тренировку через 2 часа» — бот через два часа стучится тебе сам. Тут пригодится работа со временем и таймерами.
- Словарь или переводчик. Кидаешь английское слово — бот присылает перевод и пример. Можно держать слова прямо в коде, в обычном словаре Python.
- Бот для класса. Команда
/raspisanieприсылает расписание,/dz— домашку,/stolovaya— меню в столовой. Добавь его в общий чат — и весь класс пользуется тем, что ты сделал за вечер. - Бот-викторина. Задаёт вопросы с кнопками-вариантами и считает очки. Кнопки в aiogram добавляются буквально парой строк.
Заметь главное: всё это — тот же скелет, что выше. Меняется только то, что бот отвечает внутри обработчиков. Каркас один, начинок — бесконечность.
Что с этим делать
Бот — идеальный первый проект: результат видно сразу, его можно потрогать в своём же телефоне и тут же показать друзьям. Это не абстрактная программа «в никуда», а штука, которой реально пользуются живые люди вокруг тебя.
План на вечер простой: получи токен у BotFather, поставь aiogram, запусти эхо-бот из статьи, а потом замени эхо на свою идею — хоть напоминалку, хоть бота для класса. Сделай первый шаг сегодня, и уже завтра кто-то из друзей напишет: «слушай, а это правда ты сам сделал?» Правда. Сам.