@Ekaterina200

Телеграм бот Python?Как при нажатии кнопки какого-то города получить информацию о погоде?

Здравствуйте, ребят, помогите пожалуйста: учусь делать бота на Python. Есть кнопки - это разные города. Как при нажатии на эти кнопки (имеется код парсинга с сайта погоды по городам) чтоб пользователю выдавало погоду?

Код бота:
import telebot
from telebot import types
import requests
import random
from bs4 import BeautifulSoup as b

bot = telebot.TeleBot('токен')

@bot.message_handler(commands=['start'])
def send_welcome(message):
        name = bot.get_me()
        print(name)
        bot.reply_to(message, f"Привет {message.from_user.first_name} !!!" \
                              f" С чего начнем? Для хорошего начала дня необходима информация о сегодняшнем дне. Нажми /menu")


@bot.message_handler(commands=['menu'])
def start(message):
    a = types.InlineKeyboardMarkup()
    a_weather = types.InlineKeyboardButton(text='\U0000270C Прогноз погоды в твоём городе на сегодня', callback_data='weather')
    a_astrolog = types.InlineKeyboardButton(text='\U0001F52D Астрологический прогноз на сегодня', callback_data='astrolog')
    a.add(a_weather, a_astrolog)
    bot.send_message(message.chat.id, '\U0001F31E Выбери, что ты хочешь узнать:', reply_markup=a)

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    if call.data == 'weather':
        a_weather = types.InlineKeyboardMarkup()
        a_weather_1 = types.InlineKeyboardButton(text='Гомель', callback_data='gomel')
        a_weather_2 = types.InlineKeyboardButton(text='Минск', callback_data='minsk')
        a_weather_3 = types.InlineKeyboardButton(text='Витебск', callback_data='vitebsk')
        a_weather_4 = types.InlineKeyboardButton(text='Гродно', callback_data='grodno')
        a_weather_5 = types.InlineKeyboardButton(text='Могилёв', callback_data='mogilev')
        a_weather_6 = types.InlineKeyboardButton(text='Брест', callback_data='brest')
        a_weather.add(a_weather_1, a_weather_2, a_weather_3, a_weather_4, a_weather_5, a_weather_6)
        bot.send_message(call.message.chat.id, text='Выбери областной центр', reply_markup=a_weather)

bot.polling(none_stop=True)

Код парсинга с сайта погоды (как его к кнопке города привязать, не понимаю....):
import requests
import bs4

weather_minsk = 'https://world-weather.ru/pogoda/belarus/minsk/'

r_minsk = requests.get(weather_minsk)
b_minsk = bs4.BeautifulSoup(r_minsk.text, 'html.parser')
result_minsk = b_minsk.select('span.dw-into')
for i in result_minsk:
    text_result_minsk = i.getText()

if city == 'Минск':
    print(f'Погода в Минске. {text_result_minsk}')

else:
    print(f'Такого областного центра нет в Беларуси. Попробуйте еще раз!')


Если нет конкретных советов, помогите хотя бы с информацией, где прочитать... везде примеры именно просто парсинг (без кнопки в боте)..
Спасибо
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Petr_axeman
Full-stack web python developer
Давно последний раз бота писал, но если я правильно помню по кнопкам впринципе мало информации посмотри как они в принципе работают, там либо колбек вызывается как то хитро, либо отдельное событие хендлером отлавливаеися с колбек датой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы