Написал бота для ТГ на python(Погода, валюта и т.д), при нажатий на погоду выходит (Сейчас погода: {'cod': '404', 'message': 'city not found'})

Написал бота для Телеграмма по видео на Youtube. Функций данного бота: Вывод погоды, рандом число, курс валют(еще в процессе). Сделал меню из кликабельных кнопок, но при нажатий на "Погода" выходит "Введите название города:", и после этого сразу ошибка, т.е бот как будто отвечает на сообщение "Погода". Как сделать так что бы бот отвечал на то, что напишу я в чате? Не судите строго, только начинаю в этом разбираться. Скрины прикреплю.

Вот сама ошибка

Вот сам код:

import telebot
import random
import requests
import json
import datetime

from telebot import types

API = 'api'
TOKEN = 'token'

bot = telebot.TeleBot(TOKEN)



@bot.message_handler(commands=['start'])
def welcome(message):
    sti = open('static/welcome.webp', 'rb')
    bot.send_sticker(message.chat.id, sti)

    # keyboard
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("? Рандомное число")
    item2 = types.KeyboardButton("? Курс валют")
    item3 = types.KeyboardButton("⛅️ Погода")

    markup.add(item1, item2, item3)

    bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы быть Локи и показывать погоду.".format(message.from_user, bot.get_me()),
        parse_mode='html', reply_markup=markup)
    

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

def get_weather(message):
    if message == '⛅️ Погода':
        bot.send_message(message.chat.id, str('Введите название города:'))
    city = message.text.strip().lower()
    res = requests.get(f'https://api.openweathermap.org/data/2.5/weather?q={city}&appid={API}&units=metric')
    bot.reply_to(message, f'Сейчас погода: {res.json()}')


bot.polling(none_stop=True)

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

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

Попробуйте так используя register_next_step_handler:

import telebot
import random
import requests
import json
import datetime

from telebot import types

TOKEN = 'токен'
API = ""

bot = telebot.TeleBot(TOKEN)


@bot.message_handler(commands=['start'])
def welcome(message):
    sti = open('static/welcome.webp', 'rb')
    bot.send_sticker(message.chat.id, sti)

    # keyboard
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("? Рандомное число")
    item2 = types.KeyboardButton("? Курс валют")
    item3 = types.KeyboardButton("⛅️ Погода")

    markup.add(item1, item2, item3)

    bot.send_message(message.chat.id,
                     "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы быть Локи и показывать погоду.".format(
                         message.from_user, bot.get_me()),
                     parse_mode='html', reply_markup=markup)


@bot.message_handler(content_types=['text'])
def button_handler(message):
    if message.text == '⛅️ Погода':
        bot.send_message(message.chat.id, 'Введите название города:')
        bot.register_next_step_handler(message, get_weather)


def get_weather(message):
    city = message.text.strip().lower()
    res = requests.get(f'https://api.openweathermap.org/data/2.5/weather?q={city}&appid={API}&units=metric')
    bot.reply_to(message, f'Сейчас погода: {res.json()}')


bot.polling(none_stop=True)

→ Ссылка