Telegram Bot. Руководство по созданию бота в мессенджере Телеграм.

Артем Демиденко, 2023

Эта книга является практическим руководством по созданию бота для Telegram с использованием языка программирования Python. В ней описываются основные шаги для создания бота, такие как регистрация и получение токена, установка и настройка необходимых библиотек, создание функций бота и его запуск. Также рассмотрены дополнительные функции, которые можно добавить в бота, такие как отправка фотографий и видео, использование клавиатуры для быстрого ответа на сообщения, интеграция с другими сервисами и машинное обучение для распознавания сообщений. Эта книга предназначена для начинающих разработчиков, которые хотят создать своего первого бота для Telegram и имеют базовые знания в программировании на Python. Создание бота в Telegram достаточно простое и может быть осуществлено даже теми, кто не имеет опыта в программировании.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Telegram Bot. Руководство по созданию бота в мессенджере Телеграм. предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Глава 4: Создание функций бота

После того, как мы создали базовый бот в предыдущей главе, мы можем начать добавлять функциональность, чтобы наш бот был более полезным для пользователей. В этой главе мы рассмотрим создание функций для нашего бота.

Давайте представим, что мы хотим создать функцию, которая будет отправлять пользователю случайную цитату. Для этого мы можем использовать API сайта They Said So, который предоставляет доступ к большому количеству цитат известных людей.

Для начала, нам нужно получить API-ключ от сайта They Said So. Затем мы можем использовать библиотеку requests для отправки запросов на сервер сайта и получения случайной цитаты.

import requests

def get_quote():

….url ="https://api.theysaidso.com/quote/random"

….headers = {"Accept":"application/json"}

….response = requests.get(url, headers=headers)

….quote = response.json()["contents"]["quote"]

….return quote

Эта функция отправляет GET-запрос на сервер сайта They Said So и получает случайную цитату в формате JSON. Затем мы извлекаем цитату из ответа и возвращаем ее.

Теперь, чтобы использовать эту функцию в нашем боте, мы можем создать новый обработчик команды"/quote", который будет вызывать функцию get_quote и отправлять полученную цитату пользователю:

def quote(update, context):

….quote = get_quote()

….context.bot.send_message(chat_id=update.effective_chat.id, text=quote)

updater.dispatcher.add_handler(CommandHandler('quote', quote))

Мы добавили обработчик команды"/quote", который вызывает функцию get_quote и отправляет полученную цитату пользователю.

Также мы можем добавить функцию, которая будет отправлять пользователю случайную картинку кота. Для этого мы можем использовать API сайта TheCatAPI, который предоставляет доступ к большому количеству фотографий котов.

def get_cat_image_url():

….url ="https://api.thecatapi.com/v1/images/search"

….response = requests.get(url)

….image_url = response.json()[0]["url"]

….return image_url

Эта функция отправляет GET-запрос на сервер сайта TheCatAPI и получает случайную фотографию кота в формате JSON. Затем мы извлекаем URL изображения и возвращаем его.

Теперь мы можем создать обработчик команды"/cat", который будет вызывать функцию get_cat_image_url и отправлять пользователю полученную картинку кота:

def cat(update, context):

….image_url = get_cat_image_url()

….context.bot.send_photo(chat_id=update.effective_chat.id, photo=image_url)

updater.dispatcher.add_handler(CommandHandler('cat', cat))

Для того чтобы наш бот стал еще более функциональным, мы можем добавить ему возможность получения прогноза погоды. Для этого мы можем использовать API сайта OpenWeatherMap.

Для начала, мы должны получить API-ключ от сайта OpenWeatherMap и установить библиотеку pyowm, которая облегчает работу с API. Затем мы можем создать функцию, которая будет получать текущую погоду для заданного города:

import pyowm

owm = pyowm.OWM('your-api-key')

def get_weather(city):

….observation = owm.weather_at_place(city)

….weather = observation.get_weather()

….temperature = weather.get_temperature('celsius')['temp']

….status = weather.get_detailed_status()

….return f"Current weather in {city}: {status}. Temperature: {temperature}°C"

Эта функция получает текущую погоду для заданного города, используя API сайта OpenWeatherMap. Мы извлекаем температуру и детальный статус погоды, а затем формируем строку с информацией о погоде.

Теперь мы можем создать обработчик команды"/weather", который будет вызывать функцию get_weather и отправлять пользователю информацию о погоде для заданного города:

def weather(update, context):

….text = update.message.text

….city = text.split(' ')[1]

….weather = get_weather(city)

….context.bot.send_message(chat_id=update.effective_chat.id, text=weather)

updater.dispatcher.add_handler(CommandHandler('weather', weather))

Мы добавили обработчик команды"/weather", который получает название города из сообщения пользователя и вызывает функцию get_weather для получения информации о погоде. Затем мы отправляем полученную информацию пользователю.

Теперь наш бот имеет три функции: отправку случайной цитаты, отправку случайной картинки кота и получение информации о погоде для заданного города. Мы можем продолжать добавлять новые функции, чтобы сделать наш бот еще более полезным и интересным для пользователей.

Конец ознакомительного фрагмента.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Telegram Bot. Руководство по созданию бота в мессенджере Телеграм. предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я