Python. Telegram bot. Не получается настроить бота с парой функций

Делаю простого бота, который по команде /start говорит приветствие и отображает две кнопки, с погодой (на основе OpenWeatherMap) и генератором фразы (по одному случайному слову из трех разных .txt файлов). Проблема в том, что никак не могу заставить все это работать вместе. В данном ниже коде следующие проблемы при работе:

  1. После приветствия, при нажатии на кнопку "Погода", он отвечает как задумано - "Выберите город". Но одновременно с этим пишет "Ошибка! Город не найден!", хотя он должен по задумке писать ее после неправильно введенного города. Если далее ввести город, например Москва, то он покажет нужный ответ с погодой.

  2. При нажатии кнопки "Генератор фраз" выкидывает "Ошибка! Город не найден!", хотя это не имеет отношение к этому никакого и он должен выдать фразу на русском из 3 случайных слов и все. Если функцию с генератором фраз запускать отдельно, то при нажатии на кнопку она работает корректно.

  3. И еще, небольшой косметический момент не понятный мне как реализуется. Как сделать чтобы при нажатии на кнопку "Генератор фраз" он сразу выдавал фразу, без отправки в чат каждый раз самой фразы.

Не:

Генератор фраз
Иван Иванов из города Москва
Генератор фраз
Петр Петров из города Тула
Генератор фраз
Андрей Андреев из города Омск

А так:

Иван Иванов из города Москва
Петр Петров из города Тула
Андрей Андреев из города Омск

Код бота целиком:

import pyowm
import random
import telebot

from telebot import types

owm = pyowm.OWM('34a986575***********', language = "ru")
bot = telebot.TeleBot("35436*****************")

@bot.message_handler(commands=['start'])
def start_message(message):

    # keyboard
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton('Погода')
    item2 = types.KeyboardButton('Генератор фраз')

    markup.add(item1, item2)

    bot.send_message(message.chat.id, "Привет. Что ты хочешь {0.first_name}?".format(message.from_user, bot.get_me()), parse_mode='html', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def real_time_weather(message):
    if message.text == 'Погода':    
      bot.send_message(message.chat.id, 'Выберите город')
    try:
      observation = owm.weather_at_place(message.text)
      w = observation.get_weather()
      answer = "В городе " + message.text + " сейчас " + w.get_detailed_status() + "\n"
      bot.send_message(message.chat.id, answer)
    except:
      bot.send_message(message.chat.id,'Ошибка! Город не найден.')

def phrase_generator(message):
    if message.text == 'Генератор фраз':
      random_line = random.choice(open("name.txt", 'r', encoding='utf-8').read().split('\n')) + " " + random.choice(open("surname.txt", 'r', encoding='utf-8').read().split('\n')) + " из города " + random.choice(open("city.txt", 'r', encoding='utf-8').read().split('\n'))
      bot.send_message(message.chat.id, random_line)

bot.polling()

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