Бот в Telegram — это популярное решение для бизнесов, которые хотят автоматизировать коммуникацию с аудиторией, улучшить взаимодействие с клиентами или создать развлекательный сервис. Рассказываем, как сделать бота в Telegram, начиная от идеи и заканчивая его размещением на сервере.
Telegram-бот — это программа, работающая внутри мессенджера Telegram. Она может отвечать на сообщения, выполнять заранее установленные команды, отправлять уведомления и взаимодействовать с другими сервисами. На вопрос «Как работает бот Telegram?» можно ответить просто: он использует Telegram Bot API для связи с пользователями.
Telegram-боты многофункциональны, их можно использовать для решения разных задач:
Если вам интересно, как написать Telegram-бота на Python, следуйте пошаговой инструкции, приведенной ниже.
Прежде чем начать, определитесь, какую бизнес-задачу решает ваш Telegram-бот и какой ему нужен функционал. Например, у информационного сервиса об актуальных погодных условиях и у бота для тестов на определения уровня депрессии разные задачи и функции. Первый должен высылать уведомления, тогда как второй предполагает несколько сценариев коммуникации.
Еще до начала создания Telegram-бота понадобится:
/newbot
.Важно: токен должен храниться только у владельца бота, передавать его другим лицам нельзя. Если токен скомпрометирован, то необходимо пересоздать его. Для каждого бота нужно создавать отдельный токен.
Читайте также: Что такое хостинг?
Поскольку мы разрабатываем телеграм-бот на Python, нужно начать с настройки виртуального окружения и установки библиотеки для удобного создания ботов.
pip install python-telegram-bot
В терминале выполните:
python -m venv myenv
Где myenv
— это название виртуального окружения.
Активируйте окружение:
myenv\Scripts\activate
source myenv/bin/activate
После активации в командной строке должно появиться название окружения:
(myenv) C:\>
Самый простой из возможных ботов называется эхо-бот. Он просто повторяет сообщения, отправленные пользователем. Если пользователь пишет «Привет», бот отвечает «Привет». Это идеальная отправная точка для новичков в программировании ботов, поскольку он помогает понять, как работает взаимодействие между пользователем и ботом через 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()
Разберем ключевые части этого кода:
update.message.text
содержит текст сообщения, отправленного пользователем.reply_text
отправляет этот текст обратно пользователю.Updater:
управляет обменом данными с Telegram.Dispatcher (dp):
распределяет задачи между обработчиками.MessageHandler:
отвечает за обработку текстовых сообщений. start_polling:
запускает цикл обработки новых сообщений.Также интересно: Как я писал telegram бот с админкой на Django
Запустите скрипт и отправьте сообщение вашему боту в Telegram. Он должен ответить, повторяя ваше сообщение. При тестировании нужно проверить каждую функцию вашего бота, чтобы убедиться в корректности его работы и избежать неприятных сюрпризов.
Эхо-бот — это лишь основа. После успешного тестирования вы можете:
/start
, /help
.Они упрощают взаимодействие с пользователями, позволяя пользователю выбрать доступное действие из списка. Вот пример, как их можно создать:
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)
Разберем ключевые части этого кода.
InlineKeyboardButton
используются для создания кнопок с текстом и данными (callback_data). InlineKeyboardMarkup задает структуру клавиатуры для размещения кнопок.start
активируется, когда пользователь вводит команду /start.keyboard
:
InlineKeyboardButton
, ее текст отображается пользователю, а callback_data
передается при нажатии для последующей обработки.reply_markup
используется для прикрепления кнопок к сообщению.reply_text
отправляет сообщение пользователю вместе с разметкой клавиатуры (reply_markup)
, которая позволяет пользователю выбирать опции, нажимая на кнопки.Бота можно интегрировать с различными системами, такими как CRM, сервисами для коммуникации и другими ресурсами. Например, добавим прогноз погоды через OpenWeather API:
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-бот работал 24/7, его нужно разместить на сервере. Один из самых простых способов — использовать Heroku. Heroku — это PaaS (Platform as a Service), то есть платформа как услуга, которая предоставляет готовую инфраструктуру для запуска приложений, включая серверы, базы данных и инструменты для деплоя. С помощью Heroku вы можете разместить своего Telegram-бота, чтобы он работал круглосуточно, без необходимости настраивать и поддерживать сервер самостоятельно. Сделать это несложно:
python
pip freeze > requirements.txt
Не забудьте протестировать работу бота после разворачивания его на сервере.
Теперь вы знаете, как сделать бота в Telegram. Это не только полезный инструмент, но и увлекательный процесс. Научиться создавать Telegram-ботов, а также автоматизировать другие бизнес-задачи, можно на курсе Python-разработки от компании Хекслет.