Я написал код, который передаёт погоду с openweathermap. Хочу перенести его в проект с телеграм ботом, написанным с помощью pyTelegramBotAPI, но не могу понять, как сделать так, чтобы он работал по Inline клавиатуре. Цель: Сначала бот реагирует на Outline клавиатуру, после чего выводит Inline клавиатуру, где будет всего одна кнопка "Город". После нажатия на эту кнопку выводит данные о погоде этого города.
Отредактируйте пожалуйста оба кода так, чтобы цель была выполнена
import requests
import datetime
from pprint import pprint
from config import open_weather_token
#Код передачи погоды
def get_weather(city, open_weather_token):
code_to_smile = {
'Clear': "Ясно \U00002600",
'Clouds': 'Облачно \U00002601',
'Rain': 'Дождь \U00002614',
'Drizzle': 'Дождь \U00002614',
'Thunderstorm':'Гроза \U000026A1',
'Snow': 'Снег \U0001F328',
'Mist': 'Туман \U0001F32B'
}
try:
r = requests.get(
f"http://api.openweathermap.org/data/2.5/weather?q={City}&appid={open_weather_token}&units=metric"
)
data = r.json()
city = data['name']
cur_weather = data['main']['temp']
weather_description = data['weather'][0]['main']
if weather_description in code_to_smile:
wd = code_to_smile[weather_description]
else:
wd = 'Несвойственная городу погода'
humidity = data['main']['temp']
pressure = data['main']['temp']
wind = data['wind']['speed']
sunrice_timestamp = datetime.datetime.fromtimestamp(data['sys']['sunrise'])
sunset_timestamp = datetime.datetime.fromtimestamp(data['sys'] ['sunset'])
lenght_of_the_day = datetime.datetime.fromtimestamp(data['sys'] ['sunset']) - datetime.datetime.fromtimestamp(
data['sys']['sunrise'])
print(f'***{datetime.datetime.now().strftime("%Y-%m-%d %H:%M")}***\n'
f'Погода в городе:{city}\nТемпература: {cur_weather}°C {wd}\n'
f'Влажность: {humidity}%\nДавление: {pressure} мм.рт.ст\nВетер: {wind} м/с\n'
f'Восход солна: {sunrice_timestamp}\nЗакат солнца: {sunset_timestamp}\n'
f'Протяжённость светлого времени суток: {lenght_of_the_day}\n'
f'Хорошего дня'
)
except Exception as ex:
print(ex)
def main():
city = message.text #
get_weather(city, open_weather_token)
if __name__ == '__main__':
main()
#Код бота
@bot.message_handler(content_types=['text'])
def komandy(message):
if message.chat.type == 'private':
#РАСПИСАНИЕ
if message.text == 'Погода':
markup2 = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton('Москва', callback_data='Moskva')
markup.add(item1)
bot.send_message(message.chat.id, 'Выберите город', reply_markup=[markup2])
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
try:
if call.data == 'Moskva':
pass
except Exception as e:
print(repr(e))