Показывает одно и тоже значение в кнопке

@bot.message_handler(content_types=["text"])

def get_weather(message):

code_to_smail = {
"Clear": 'Ясно\U00002600',
"Clouds": 'Облачно\U00002601',
"Rain": 'Дождь\U0001F327',
"Thunderstorm": 'Гроза\U000026C8',
"Mist": 'Туман\U0001F32B',
"Snow": 'Снег\U00002744',
 }

  city = message.text.strip().lower()
  res = requests.get(f'https://api.openweathermap.org/data/2.5/weather?q= 
  {city}&units=metric&lang=ru&appid={API}')

  with open(log_path, "a") as f:
 f.write("сообщение старт")
if res.status_code == 200:
with open(log_path, "a") as f:
    f.write(str(res))
data = json.loads(res.text)
with open(log_path, "a") as f:
    f.write(str(data))
temp = data["main"]["temp"]

weather_description = data['weather'][0]['main']
if weather_description in code_to_smail:
    wd = code_to_smail[weather_description]
else:
    wd = 'Не могу распознать что там, посмотри сам'

feels_like = data["main"]["feels_like"]
temp_min = data['main']['temp_min']
pressure = data["main"]["pressure"]
humidity = data["main"]["humidity"]
wind = data["wind"]["speed"]

kb = types.InlineKeyboardMarkup(row_width=1)
btn = types.InlineKeyboardButton(text='Доп.информация', callback_data='btn1')
kb.add(btn)

bot.send_message(message.chat.id,
                 f'· На улице:  {wd}\n'
                 f'· Температура:   {int(temp)}°C\U0001f321\n'
                 f'· Но по ощущениям  {int(feels_like)}°C\n'
                 f'· Давление:  {pressure} мм.рт.ст\n'
                 f'· Ветер:  {wind} м/с\n'
                 f'· Влажность:  {humidity} %\n'
                 f'<b>Я рад был подсказать тебе погоду\n</b>'
                 f'<b>Всего доброго!\n</b>', parse_mode='html', reply_markup=kb)

else:
bot.send_message(message.chat.id, f'Город указан неверно, попробуй еще раз!')

@bot.callback_query_handler(func=lambda callback: callback.data)  # создаем команду
def check_callback_data(callback):
 if callback.data == 'btn1':
    bot.send_message(message.chat.id, f'{temp_min}')

Проблема в том что когда один какой то пользователь введет город значения остаются и не меняются, получается нажав на кнопку висит одно и тоже значение хотя должно меняться, в чем проблема может быть? @bot.callback_query_handler(func=lambda callback: callback.data) находится внутри редактора, так как функция "temp_min" не глобальна. Напишите пожалуйста исправленным кодом, я уже ломаю голову перелистал интернет ничего не нашел.

введите сюда описание изображения

Вот скрин бота сверху ввел другой город снизу другой но значения не меняются. Подскажите пожалуйста в чем проблема.


Ответы (1 шт):

Автор решения: Amgarak

Если я правильно понял вашу проблему:

import telebot
from telebot import types

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

@bot.message_handler(content_types=["text"])
def get_weather(message):


    city = message.text.strip()

    kb = types.InlineKeyboardMarkup(row_width=1)
    btn = types.InlineKeyboardButton(text='Доп.информация', callback_data=f'btn1_{city}')
    kb.add(btn)

    bot.send_message(message.chat.id,
                     f'Моё сообщение - ура, оно тут: {city}\n'
                     f'<b>Дополнительная информация:</b>', parse_mode='html', reply_markup=kb)

@bot.callback_query_handler(func=lambda callback: callback.data.startswith('btn1_'))
def check_callback_data(callback):

    city = callback.data.split('_')[1]
    bot.send_message(callback.message.chat.id, f'Пишет бот: {city}')


bot.polling(none_stop=True)

введите сюда описание изображения

→ Ссылка