За последние дни каждый из нас часто начал заходить на сайты, которые предоставляют актуальные данные по количеству заболевших в разных странах мира. Сервисы эти, безусловно, полезны, но все же они не столь удобны для частого их использования.
Куда проще отслеживать данные по интересующей вас стране через телеграмм, а именно через специального бота. Подобные боты уже делали, но нам все равно интересно сделать своего и плюс показать процесс создания такого бота.
В первую очередь разберемся с инструментами. Мы будем использовать язык Питон, а также программу PyCharm для написания кода. В программе создаем новый проект, к примеру App, а внутри проекта создаем новый файл, к примеру
.
Устанавливаем библиотеку под названием getLatest()
и вывести информацию в консоль.
import COVID19Py
covid19 = COVID19Py.COVID19()
latest = covid19.getLatest()
print(latest)
И да, чтобы у нас все заработало не забываем установить библиотеку
После запуска мы получаем необходимую информацию. Выведенная информация сообщает нам об общем количестве заболевших во всем мире.
Если еще немного поиграться с кодом, то можно получить необходимые данные по определенной стране. При чем мы можем получить данные как про общее население, так и про количество заболевших или же умерших людей.
import COVID19Py
covid19 = COVID19Py.COVID19()
location = covid19.getLocationByCountryCode("US")
print(location)
Окей, первая часть программы завершена. Теперь нам нужно сделать так, чтобы все это работало в телеграмм боте.
Для работа с API телеграмма необходимо использовать одну из возможных библиотек. Библиотек много, но давайте сейчас остановимся на
Сперва выполняем её установку в проект. После установки импортируем её, а также устанавливаем API ключ для бота.
Получить ключ для бота можно через другого специального бота в телеграмме. Этот бот называется BotFather. Работать с ботом очень просто и всё что нам нужно сделать, так это обратиться к «папе боту», создать в нём нового бота, придумать название и после этого получить API ключ. Кстати, здесь же вы можете указать описание для бота, фото и прочую инфу. Если захотите, то с этим неплохо можно поиграться.
Вставляем полученный ключ в программу. Теперь давайте создадим функцию, которая будет срабатывать при отправке команды start. Также создадим функцию, что будет обрабатывать все сообщения от пользователя. Весь код представлен ниже:
import telebot
from telebot import types
import COVID19Py
covid19 = COVID19Py.COVID19()
bot = telebot.TeleBot('ВАШ_API_КЛЮЧ')
# Функция, что сработает при отправке команды Старт
# Здесь мы создаем быстрые кнопки, а также сообщение с привествием
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
btn1 = types.KeyboardButton('Во всём мире')
btn2 = types.KeyboardButton('Украина')
btn3 = types.KeyboardButton('Россия')
btn4 = types.KeyboardButton('Беларусь')
markup.add(btn1, btn2, btn3, btn4)
send_message = f"<b>Привет {message.from_user.first_name}!</b>\nЧтобы узнать данные про коронавируса напишите " \
f"название страны, например: США, Украина, Россия и так далее\n\nЗаходи к нам на сайт <a href='https://itproger.com'>itProger</a>"
bot.send_message(message.chat.id, send_message, parse_mode='html', reply_markup=markup)
# Функция, что сработает при отправке какого-либо текста боту
# Здесь мы создаем отслеживания данных и вывод статистики по определенной стране
@bot.message_handler(content_types=['text'])
def mess(message):
final_message = ""
get_message_bot = message.text.strip().lower()
if get_message_bot == "сша":
location = covid19.getLocationByCountryCode("US")
elif get_message_bot == "украина":
location = covid19.getLocationByCountryCode("UA")
elif get_message_bot == "россия":
location = covid19.getLocationByCountryCode("RU")
elif get_message_bot == "беларусь":
location = covid19.getLocationByCountryCode("BY")
elif get_message_bot == "казакхстан":
location = covid19.getLocationByCountryCode("KZ")
elif get_message_bot == "италия":
location = covid19.getLocationByCountryCode("IT")
elif get_message_bot == "франция":
location = covid19.getLocationByCountryCode("FR")
elif get_message_bot == "германия":
location = covid19.getLocationByCountryCode("DE")
elif get_message_bot == "япония":
location = covid19.getLocationByCountryCode("JP")
else:
location = covid19.getLatest()
final_message = f"<u>Данные по всему миру:</u>\n<b>Заболевших: </b>{location['confirmed']:,}\n<b>Сметрей: </b>{location['deaths']:,}"
if final_message == "":
date = location[0]['last_updated'].split("T")
time = date[1].split(".")
final_message = f"<u>Данные по стране:</u>\nНаселение: {location[0]['country_population']:,}\n" \
f"Последнее обновление: {date[0]} {time[0]}\nПоследние данные:\n<b>" \
f"Заболевших: </b>{location[0]['latest']['confirmed']:,}\n<b>Сметрей: </b>" \
f"{location[0]['latest']['deaths']:,}"
bot.send_message(message.chat.id, final_message, parse_mode='html')
# Это нужно чтобы бот работал всё время
bot.polling(none_stop=True)
Сейчас каждый может протестировать нашего бот по
Также вы можете просмотреть детальное видео по разработке данного бота:
На нашем сайте также есть