Создание Telegram-бота, взаимодействующего с API стороннего сервиса: Обзор библиотек Python
Содержание страницы
Telegram-боты — это небольшие программы, которые можно использовать для автоматизации набора задач внутри мессенджера Telegram. Они могут быть интегрированы с API сторонних сервисов для расширения своих функциональных возможностей. В этой статье мы обсудим, как создать такого рода бота с использованием Python и его библиотек.
Использование библиотеки python-telegram-bot
Библиотека python-telegram-bot представляет собой оболочку для API Telegram Bot, которая облегчает создание ботов. В качестве примера создадим простого бота, который использует OpenWeatherMap API для получения текущей погоды.
Установка библиотеки
pip install python-telegram-bot
pip install requests
Пример кода
from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext
import requests
def get_weather(city: str) -> str:
response = requests.get(f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid=YOUR_OPENWEATHERMAP_API_KEY")
data = response.json()
description = data['weather'][0]['description']
temp = int(data['main']['temp'] - 273.15) # convert from Kelvin to Celsius
return f"Weather in {city}: {description}, temperature: {temp}°C"
def weather(update: Update, context: CallbackContext):
city = ' '.join(context.args)
update.message.reply_text(get_weather(city))
def main():
updater = Updater("YOUR_TELEGRAM_BOT_TOKEN", use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler("weather", weather))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
В этом примере функция get_weather
отправляет HTTP GET запрос к API OpenWeatherMap и извлекает описание погоды и температуру для указанного города.
Использование библиотеки aiogram
Aiogram — это еще одна популярная асинхронная библиотека для создания Telegram-ботов на Python. Возьмем аналогичный пример с прогнозом погоды.
Установка библиотеки
pip install aiogram
pip install requests
Пример кода
from aiogram import Bot, Dispatcher, types
import requests
import asyncio
async def get_weather(city: str) -> str:
response = requests.get(f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid=YOUR_OPENWEATHERMAP_API_KEY")
data = response.json()
description = data['weather'][0]['description']
temp = int(data['main']['temp'] - 273.15) # convert from Kelvin to Celsius
return f"Weather in {city}: {description}, temperature: {temp}°C"
async def weather(message: types.Message):
city = message.text.split('/weather', 1)[1].strip()
await message.reply(await get_weather(city))
async def main():
bot = Bot("YOUR_TELEGRAM_BOT_TOKEN")
dp = Dispatcher(bot)
dp.register_message_handler(weather, commands=['weather'])
await dp.start_polling()
if __name__ == '__main__':
asyncio.run(main())
В обоих примерах вам необходимо заменить YOUR_TELEGRAM_BOT_TOKEN
на токен своего бота, а YOUR_OPENWEATHERMAP_API_KEY
— на свой ключ API OpenWeatherMap.
Пожалуйста, обратите внимание, что это базовые примеры и в реальном использовании вам потребуется обработка ошибок и валидация входных данных.
Создание бота Telegram, который взаимодействует с API стороннего сервиса, — это мощный способ расширить возможности вашего бота и сделать его еще более полезным для пользователей. Python и его библиотеки предоставляют простой и гибкий способ создания таких ботов.