Скидки до 20% + 2-ая профессия бесплатно и подарки на 50 000₽

Главная | Все статьи | Код

Как создать бота в Telegram: большая инструкция

Без стека Python Время чтения статьи ~8 минут
Как создать бота в Telegram: большая инструкция главное изображение

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

Изучите основы Python бесплатно

Пройти бесплатный курс

Что такое Telegram-боты и зачем они нужны?

Telegram-бот — это программа, работающая внутри мессенджера Telegram. Она может отвечать на сообщения, выполнять заранее установленные команды, отправлять уведомления и взаимодействовать с другими сервисами. На вопрос «Как работает бот Telegram?» можно ответить просто: он использует Telegram Bot API для связи с пользователями.

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

  • Бизнес-задачи. Автоматизация обработки заявок, сбор отзывов, автоворонки для продажи товаров и услуг.
  • Развлечения. Игры, викторины или общение с ИИ-ботом.
  • Образование. Виртуальные ассистенты с предписанными обучающими материалами.

Пошаговая инструкция создания и запуска Telegram-бота

Если вам интересно, как написать Telegram-бота на Python, следуйте пошаговой инструкции, приведенной ниже.

Шаг 1: подготовка к созданию бота

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

Еще до начала создания Telegram-бота понадобится:

  • Учетная запись Telegram.
  • Знания Python, который можно освоить на курсе Python-разработки.
  • Хостинг для размещения бота (Heroku, AWS и т. д.).

Шаг 2: регистрация бота через BotFather

  1. Найдите бота @BotFather в Telegram.
  2. Отправьте команду /newbot.
  3. Укажите имя и @username для бота. Username обязательно должен заканчиваться словом bot.
  4. BotFather выдаст вам токен для доступа к Telegram Bot API.

Важно: токен должен храниться только у владельца бота, передавать его другим лицам нельзя. Если токен скомпрометирован, то необходимо пересоздать его. Для каждого бота нужно создавать отдельный токен.

Читайте также: Что такое хостинг?

Шаг 3: установка Python и библиотек

Поскольку мы разрабатываем телеграм-бот на Python, нужно начать с настройки виртуального окружения и установки библиотеки для удобного создания ботов.

  1. Скачайте Python с официального сайта (об установке Python детальнее написано здесь).
  2. Установите библиотеку python-telegram-bot:
pip install python-telegram-bot
  1. Если ваша ОС — Windows, убедитесь, что при установке вы отметили опцию "Add Python to PATH". Это упростит доступ к Python из командной строки.

В терминале выполните:

python -m venv myenv

Где myenv — это название виртуального окружения.

Активируйте окружение:

  • На Windows: myenv\Scripts\activate
  • На macOS/Linux: source myenv/bin/activate

После активации в командной строке должно появиться название окружения:

(myenv) C:\>

Шаг 4: написание простого бота

Самый простой из возможных ботов называется эхо-бот. Он просто повторяет сообщения, отправленные пользователем. Если пользователь пишет «Привет», бот отвечает «Привет». Это идеальная отправная точка для новичков в программировании ботов, поскольку он помогает понять, как работает взаимодействие между пользователем и ботом через Telegram Bot API.

На примере эхо-бота мы увидим:

  • Как обрабатывать входящие сообщения.
  • Как отправлять ответы пользователю.
  • Как настроить основную структуру бота.

Вот пример простого эхо-бота, который отвечает на сообщения пользователя:

from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

# Обработчик входящих сообщений

def echo(update: Update, context: CallbackContext):
    update.message.reply_text(update.message.text)

# Основная функция
def main():
    # Инициализация Updater
    updater = Updater("BOT_TOKEN")

    # Диспетчер для обработки входящих обновлений
    dp = updater.dispatcher

    # Добавляем обработчик сообщений
    dp.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))

    # Запуск бота
    updater.start_polling()

    # Ожидаем завершения работы (например, через Ctrl+C)
    updater.idle()

if __name__ == '__main__':
    main()

Разберем ключевые части этого кода:

  1. Импорт библиотек Updater, CommandHandler, MessageHandler, Filters, CallbackContext. Эти библиотеки предоставляют инструменты для взаимодействия с Telegram и для настройки логики бота.
  2. Функция обработки сообщений:
    • update.message.text содержит текст сообщения, отправленного пользователем.
    • reply_text отправляет этот текст обратно пользователю.
  3. Основная функция:
    • Updater: управляет обменом данными с Telegram.
    • Dispatcher (dp): распределяет задачи между обработчиками.
    • MessageHandler: отвечает за обработку текстовых сообщений.
    • start_polling: запускает цикл обработки новых сообщений.

Также интересно: Как я писал telegram бот с админкой на Django

Шаг 5: тестирование

Запустите скрипт и отправьте сообщение вашему боту в Telegram. Он должен ответить, повторяя ваше сообщение. При тестировании нужно проверить каждую функцию вашего бота, чтобы убедиться в корректности его работы и избежать неприятных сюрпризов.

Как сделать бота Telegram более функциональным?

Эхо-бот — это лишь основа. После успешного тестирования вы можете:

  • Добавить команды, например /start, /help.
  • Разработать интерактивное меню с кнопками.
  • Интегрировать API сторонних сервисов, чтобы бот мог, например, показывать погоду.
  • Превратить его в полноценного чат-бота с искусственным интеллектом.

Кнопки и команды

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

from telegram import InlineKeyboardButton, InlineKeyboardMarkup

def start(update: Update, context: CallbackContext):
    keyboard = [[InlineKeyboardButton("Кнопка 1", callback_data='1'),
                 InlineKeyboardButton("Кнопка 2", callback_data='2')]]
    reply_markup = InlineKeyboardMarkup(keyboard)
    update.message.reply_text('Выберите опцию:', reply_markup=reply_markup)

Разберем ключевые части этого кода.

  1. Импорты InlineKeyboardButton используются для создания кнопок с текстом и данными (callback_data). InlineKeyboardMarkup задает структуру клавиатуры для размещения кнопок.
  2. Функция start активируется, когда пользователь вводит команду /start.
  3. Переменная keyboard:
    • Список списков, где каждый вложенный список — это строка кнопок на клавиатуре.
    • Кнопка создается с помощью InlineKeyboardButton, ее текст отображается пользователю, а callback_data передается при нажатии для последующей обработки.
  4. Переменная reply_markup используется для прикрепления кнопок к сообщению.
  5. Метод reply_text отправляет сообщение пользователю вместе с разметкой клавиатуры (reply_markup), которая позволяет пользователю выбирать опции, нажимая на кнопки.

Интеграция с внешними сервисами

Бота можно интегрировать с различными системами, такими как CRM, сервисами для коммуникации и другими ресурсами. Например, добавим прогноз погоды через OpenWeather API:

  1. Получите API-ключ на OpenWeather.
  2. Напишите функцию:
import requests

def get_weather(city):
    api_key = "API_KEY"  # Замените на ваш ключ API из OpenWeather
    url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"

    try:
        response = requests.get(url)
        response.raise_for_status()  # Проверяем, нет ли ошибок HTTP
        data = response.json()

        if 'main' in data:
            return f"Температура в {city}: {data['main']['temp']}°C"
        else:
            return f"Не удалось получить данные о погоде для города: {city}. Убедитесь, что название введено правильно."
    except requests.exceptions.RequestException as e:
        return f"Произошла ошибка при запросе: {e}"

if __name__ == "__main__":
    city = input("Введите название города: ")  # Запрос ввода города у пользователя
    print(get_weather(city))

Как развернуть Telegram-бота на сервере?

Чтобы Telegram-бот работал 24/7, его нужно разместить на сервере. Один из самых простых способов — использовать Heroku. Heroku — это PaaS (Platform as a Service), то есть платформа как услуга, которая предоставляет готовую инфраструктуру для запуска приложений, включая серверы, базы данных и инструменты для деплоя. С помощью Heroku вы можете разместить своего Telegram-бота, чтобы он работал круглосуточно, без необходимости настраивать и поддерживать сервер самостоятельно. Сделать это несложно:

  1. Зарегистрируйтесь на Heroku.
  2. Создайте requirements.txt (список зависимостей вашего проекта), выполнив команду: python pip freeze > requirements.txt
  3. Установите Heroku CLI и загрузите свой код.

Не забудьте протестировать работу бота после разворачивания его на сервере.

Теперь вы знаете, как сделать бота в Telegram. Это не только полезный инструмент, но и увлекательный процесс. Научиться создавать Telegram-ботов, а также автоматизировать другие бизнес-задачи, можно на курсе Python-разработки от компании Хекслет.

Аватар пользователя Валерия Белякова
Валерия Белякова 11 декабря 2024
1
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря