Чтение онлайн

на главную - закладки

Жанры

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

Но мы можем улучшить нашего бота, добавив ему дополнительный функционал. Например, мы можем создать обработчик для команды "/help", который будет выводить список доступных команд:

def help(update, context):

text = "Available commands:\n/start – start the bot\n/help – show available commands"

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

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

Теперь

мы можем отправить команду "/help" нашему боту и увидеть список доступных команд.

Мы также можем добавить обработчик для сообщений от пользователя. Например, мы можем создать обработчик для сообщения "Hi", который будет отправлять в ответ сообщение "Hello!":

def message_handler(update, context):

text = update.message.text.lower

if text == 'hi':

context.bot.send_message(chat_id=update.effective_chat.id, text="Hello!")

updater.dispatcher.add_handler(MessageHandler(Filters.text, message_handler))

Эта функция будет вызываться каждый раз, когда пользователь отправляет сообщение. Если текст сообщения равен "hi", то бот отправляет сообщение "Hello!".

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

В этой главе мы создали базовый бот на языке Python с помощью библиотеки python-telegram-bot. Мы добавили обработчики для команд "/start" и "/help", а также для сообщений от пользователя. Наш бот может отправлять сообщения в ответ на команды и сообщения, и мы можем добавить ему дополнительный функционал для обработки других типов сообщений.

Глава 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

123
Поделиться:
Популярные книги

Надуй щеки!

Вишневский Сергей Викторович
1. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки!

Блуждающие огни 2

Панченко Андрей Алексеевич
2. Блуждающие огни
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Блуждающие огни 2

Поющие в терновнике

Маккалоу Колин
Любовные романы:
современные любовные романы
9.56
рейтинг книги
Поющие в терновнике

На границе империй. Том 6

INDIGO
6. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.31
рейтинг книги
На границе империй. Том 6

Связанные Долгом

Рейли Кора
2. Рожденные в крови
Любовные романы:
современные любовные романы
остросюжетные любовные романы
эро литература
4.60
рейтинг книги
Связанные Долгом

Лучший из худших-2

Дашко Дмитрий Николаевич
2. Лучший из худших
Фантастика:
фэнтези
5.00
рейтинг книги
Лучший из худших-2

Сборник книг вселенной The Elder Scrolls

Bethesda softworks
Фантастика:
фэнтези
5.00
рейтинг книги
Сборник книг вселенной The Elder Scrolls

Дворянская кровь

Седой Василий
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Дворянская кровь

Хозяйка расцветающего поместья

Шнейдер Наталья
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Хозяйка расцветающего поместья

Попаданка 2

Ахминеева Нина
2. Двойная звезда
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Попаданка 2

Идеальный мир для Лекаря 13

Сапфир Олег
13. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 13

Беовульф (Сборник)

Мартьянов Андрей Леонидович
Фантастика:
фэнтези
альтернативная история
5.75
рейтинг книги
Беовульф (Сборник)

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Тактик

Земляной Андрей Борисович
2. Офицер
Фантастика:
альтернативная история
7.70
рейтинг книги
Тактик