@devcoahjr

У меня есть код, который передаёт погоду с openweathermap. Как сделать так, чтобы он работал в телеграм боте с inline клавиатурой?

Я написал код, который передаёт погоду с 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))
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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