Як створити та налаштувати бота в Telegram?

Чому варто створити власного бота?
Telegram-боти давно стали невід'ємним інструментом для автоматизації бізнесу, обслуговування клієнтів або навіть особистих хобі. Хоча створення та налаштування бота потребує базових знань API, це дає змогу заощадити години рутинної роботи. За допомогою ботів можна приймати замовлення, проводити опитування, відстежувати підписки або навіть грати в ігри — і все це безоплатно, з мінімальними серверними витратами. У цій статті ми розглянемо повний цикл: від реєстрації через @BotFather до тонкощів налаштування команд, вебхуків та інтеграції з зовнішніми сервісами.
Передумови для роботи
Перш ніж почати, переконайтеся, що у вас є активний обліковий запис Telegram і доступ до @BotFather – офіційного бота для керування ботами. Для реєстрації не потрібні платіжні дані чи підтвердження номера телефону. Технічне середовище може бути будь-яким: Windows, macOS, Linux або навіть мобільний пристрій, хоча для програмування зручніше використовувати комп'ютер. Якщо плануєте розгортати бота на сервері, знадобиться доступ до машини з підтримкою мов програмування (Python, Node.js тощо) та можливістю встановлювати SSL-сертифікати (для вебхуків).
Створення бота через @BotFather
Крок 1: Знайомство з BotFather
Відкрийте Telegram, знайдіть @BotFather і натисніть Start або введіть /start. Ви побачите привітання зі списком команд. Щоб створити нового бота, введіть /newbot. BotFather попросить спочатку вказати ім'я бота (наприклад, Мій помічник), а потім — унікальний username, який має закінчуватися на “_bot” (наприклад, MiyPomichnyk_bot). Після цього ви отримаєте токен доступу — довгу послідовність символів (наприклад, 123456:ABC-DEF1234). Токен — це ключ до вашого бота, тому не передавайте його стороннім.
Крок 2: Налаштування профілю бота
Після отримання токена варто одразу налаштувати зовнішній вигляд бота. У BotFather використовуйте команду /setuserpic, щоб завантажити зображення для аватарки. Потім /setdescription — короткий опис (до 512 символів), який побачать користувачі, відкриваючи бота. Команда /setabouttext задає довільний текст у розділі «Про бота». Нарешті, /setcommands дозволяє визначити список команд, що відображаються в полі вводу. Наприклад:
start – Запустити бота help – Допомога price – Ціни
Кожна команда може мати опис до 256 символів. Порядок команд впливає на зручність: перші мають бути найчастіше використовувані.
Крок 3: Налаштування конфіденційності та груп
За замовчуванням @BotFather створює бота з режимом Privacy, який блокує отримання всіх повідомлень у групах, крім явно згаданих команд. Якщо ваш бот має бачити всі тексти (наприклад, для модерації), виконайте /setprivacy і виберіть Disable. Для додавання бота до груп використовують /setjoingroups (зазвичай Enabled). Також є команда /setinline, яка дозволяє викликати бота через @username в будь-якому чаті — це зручно для швидкого пошуку даних.
Програмне налаштування: отримання оновлень
Без коду бот залишається просто аватаркою. Щоб він реагував на команди, потрібно написати програму для отримання оновлень. Існує два основні підходи: polling (опитування) і webhook (зворотний виклик).
Polling (отримання через getUpdates)
Найпростіший спосіб для тестування — polling. Ваш сервер або локальна машина періодично запитує метод getUpdates API. Наприклад, на Python з бібліотекою python-telegram-bot (актуальна версія 20.x) код виглядає так:
from telegram.ext import Application, CommandHandler
async def start(update, context):
await update.message.reply_text('Вітаю!')
async def help(update, context):
await update.message.reply_text('Список команд: /start, /help, /price')
def main():
app = Application.builder().token('ВАШ_ТОКЕН').build()
app.add_handler(CommandHandler('start', start))
app.add_handler(CommandHandler('help', help))
app.run_polling()
if __name__ == '__main__':
main()
Polling підходить для локального тестування або ботів із невеликою кількістю активних користувачів. Основний мінус: потрібне постійне підключення до інтернету і високе споживання трафіку при великій кількості чатів.
Webhook (рекомендований для продакшну)
Webhook — це URL, на який Telegram надсилає оновлення в реальному часі. Щоб налаштувати, викличте метод setWebhook, передавши публічний HTTPS-адрес вашого сервера (наприклад, https://example.com/bot). Обов'язкова умова — валідний SSL-сертифікат (самопідписаний або від CA). Telegram вимагає, щоб сертифікат не був прострочений і відповідав домену. Налаштування на стороні сервера (FastAPI/Flask) приймає POST-запити з JSON-тілом. Приклад на Python з Flask:
from flask import Flask, request
import telegram
app = Flask(__name__)
bot = telegram.Bot(token='ВАШ_ТОКЕН')
@app.route('/webhook', methods=['POST'])
def webhook():
update = telegram.Update.de_json(request.get_json(force=True), bot)
# обробка update
return 'OK'
if __name__ == '__main__':
app.run()
На відміну від polling, webhook ефективніший, оскільки Telegram сам ініціює запити, але вимагає статичної IP-адреси або домену. Якщо сервер тимчасово недоступний, Telegram намагатиметься повторно відправити оновлення (до 24 годин).
Налаштування команд і обробка різних типів повідомлень
Крім команд /start і /help, ви можете додавати власні. У BotFather команда /mybots відкриває список ботів — виберіть потрібний, потім Edit Bot → Edit Commands. Однак найбільша гнучкість досягається через код. Для обробки текстових повідомлень, фотографій, документів чи локацій використовуються відповідні хендлери. Наприклад, у python-telegram-bot:
from telegram.ext import MessageHandler, filters
async def echo(update, context):
await update.message.reply_text(f'Ви написали: {update.message.text}')
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
Різні фільтри (filters.PHOTO, filters.Document, filters.LOCATION) дозволяють точно маршрутизувати запити. Не забувайте обробляти помилки — наприклад, якщо бот не має прав на відповідь у групі, або повідомлення занадто довге.
Автоматизація та інтеграція
Бот може не лише пасивно відповідати на повідомлення, але й активно ініціювати їх. Використовуйте bot.send_message за розкладом (наприклад, за допомогою cron або планувальника завдань). Для бізнес-кейсів інтегруйте бот із CRM або Google Sheets через сторонні API — але пам'ятайте про безпеку: ніколи не зберігайте токени в клієнтському коді. Якщо потрібна обробка вебхуків від зовнішніх сервісів, переконайтеся, що бот використовує HTTPS та перевіряє підпис запиту (наприклад, за допомогою секретного ключа).
Поширені проблеми та усунення несправностей
| Симптом | Причина | Рішення |
|---|---|---|
| Бот не відповідає | Токен невірний або сервер не працює | Перевірте токен у BotFather, перезапустіть сервер |
| У групі бот не бачить повідомлення | Увімкнено Privacy Mode | Виконайте /setprivacy → Disable у BotFather |
| Помилка 409 Conflict | Два екземпляри з одним токеном | Зупиніть попередній процес або змініть токен |
| Webhook не працює | Невірний сертифікат або недоступний URL | Перевірте SSL (let'sencrypt), переконайтеся, що сервер доступний ззовні |
Коли створювати бота, а коли – ні?
Розгляньте створення бота, якщо:
- Автоматизації повторюваних завдань (нагадування, розсилки).
- Обслуговування клієнтів у режимі 24/7 без участі людини.
- Інтеграції з API сторонніх сервісів (трекери, платіжні системи).
Відмовтеся від ідеї, якщо:
- Потрібне щільне модерування контенту (краще використати людських адмінів).
- Очікується дуже високе навантаження (понад 30 повідомлень/сек) без відповідної архітектури.
- Бот має обробляти конфіденційні дані, а в вас немає ресурсу для забезпечення безпеки.
Рекомендації з найкращих практик
Ось кілька ключових порад для успішної роботи з ботом:
- Зберігайте токен у змінних середовища (env).
- Використовуйте webhook замість polling для продакшну.
- Логуйте всі необроблені оновлення (debug log).
- Тестуйте команди окремо перед розгортанням.
- Встановіть ліміти на кількість запитів, щоб уникнути блокування.
- Регулярно перевіряйте стан бота (за допомогою /mybots).
Часті запитання
Чи можна змінити ім'я бота після створення?
Так, у BotFather використайте /setname, щоб змінити звичайне ім'я, або /setusername для зміни username. Зміна username можлива, але новий має також закінчуватися на “_bot”.
Як зробити, щоб бот бачив всі повідомлення в групі?
У BotFather виконайте /setprivacy, оберіть свого бота і вимкніть режим конфіденційності (Disable). Після цього бот отримуватиме всі повідомлення, а не лише команди.
Скільки коштує створення бота в Telegram?
Сам бот безкоштовний. Витрати можуть виникнути лише на сервер (VPS або хмарний сервіс) для виконання коду бота.
Підсумки
Створення та налаштування бота в Telegram — це доступний спосіб автоматизації, що потребує лише уважної роботи з інструментами. Почніть із простого polling на локальному комп'ютері, поступово переходьте до webhook на виділеному сервері. Не забувайте про безпеку, тестування та регулярне оновлення коду. Якщо виникнуть питання — поверніться до цього гайду або зверніться до офіційної документації Telegram Bot API.