Почему не записывается новое значение в глобальную переменную?

import telebot
from telebot import *

bot = telebot.TeleBot("TOKEN")

@bot.message_handler(commands=['start'])
def send_welcome(message):
    global ids
    ids = [5265870599, 873879399] # массив с айди пользователей, которые допущены
    if message.from_user.id not in ids:
        bot.send_message(message.chat.id, 'Вход запрещен')
    else:
        wcme = types.ReplyKeyboardMarkup(row_width=2)
        ua = types.KeyboardButton('Выбрать')
        wcme.add(ua)
        bot.reply_to(message,"Привет!\nТы попал в PolitcsBot\nДля выбора страны напиши выбор или нажми кнопку ниже\n", reply_markup=wcme)

@bot.message_handler(func=lambda m: True)
def echo_all(message):
    msg = message.text
    global ids
    ids = [5265870599, 873879399]# массив с айди пользователей, которые допущены
    if message.from_user.id not in ids:
        bot.send_message(message.chat.id, 'Вход запрещен')
    else:
        if msg == "Выбрать" or msg == "выбрать":
            country = "Ничего"
            def choose_country():
                wcme = types.ReplyKeyboardMarkup(row_width=2)
                uak = types.KeyboardButton('Украина')
                rus = types.KeyboardButton('Россия')
                deg = types.KeyboardButton('Германия')
                chi = types.KeyboardButton('Китай')
                usa = types.KeyboardButton('США')
                wcme.add(uak, rus, deg, chi, usa)
                bot.reply_to(message, "Выберите страну из кнопок ниже: ", reply_markup=wcme)
                def ukraine():
                    global country
                    bot.reply_to(message, "Вы выбрали Украину!")
                    country = "Украина"
                def ru():
                    global country
                    bot.reply_to(message, "Вы выбрали Россию!")
                    country = "Россия"
                def us():
                    global country
                    bot.reply_to(message, "Вы выбрали США!")
                    country = "США"
                def de():
                    global country
                    bot.reply_to(message, "Вы выбрали Германию!")
                    country = "Германия"
                def ch():
                    global country
                    bot.reply_to(message, "Вы выбрали 中国")
                    country = "Китай"
                if msg == "Украина":
                    ukraine()
                elif msg == "Россия":
                    ru()
                elif msg == "США":
                    us()
                elif msg == "Германия":
                    global country
                    de()
                elif msg == "Китай":
                    ch()

            choose_country()
            if country != " ":
                bot.reply_to(message, "Игра начата:\nГод-1991\nВаш баланс -\
10 000 ℇ\nУровень уважения - 10%\nВаша страна - " + country)
                balance = 10000
                respect = 10
                year = 1991




bot.polling()

Доброго дня! Суть вопроса заключается в том что бы когда пользователь выбирал/писал страну, страна записывалась в переменную. Я пробовал разные способы но либо не получалось, либо писал ошибку. Помогите пожалуйста, буду признателен!


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

Автор решения: Сёгун Райдэн

Используйте bot.register_next_step_handler. Советую узнать о нём больше) В коде он регистрирует текст юзера, который ответил на вопрос в переменной country1. После чего сверяет его с ответами (со странами)

import telebot
from telebot import types


bot=telebot.TeleBot("token")

country = ""



@bot.message_handler(commands=['start'])
def send_welcome(message):
        wcme = types.ReplyKeyboardMarkup(row_width=2)
        ua = types.KeyboardButton('Выбрать')
        wcme.add(ua)
        country1=bot.reply_to(
            message,
            "Привет!\nТы попал в PolitcsBot\n"+
            "Для выбора страны напиши выбор или нажми кнопку ниже\n",
            reply_markup=wcme)

@bot.message_handler(func=lambda m: True)
def echo_all(message):
        
        global country
        msg = message.text
        if msg == "Выбрать" or msg == "выбрать":
            country = "Ничего"
            
                
            choose_country(message)
            
                
def choose_country(message):
                wcme = types.ReplyKeyboardMarkup(row_width=2)
                uak = types.KeyboardButton('Украина')
                rus = types.KeyboardButton('Россия')
                deg = types.KeyboardButton('Германия')
                chi = types.KeyboardButton('Китай')
                usa = types.KeyboardButton('США')
                wcme.add(uak, rus, deg, chi, usa)
                country1=bot.reply_to(
                    message, 
                    "Выберите страну из кнопок ниже: ", reply_markup=wcme)
                bot.register_next_step_handler(country1, prov)

def prov(message):
                    if message.text == "Украина":
                        bot.reply_to(message, "Вы выбрали Украину!")
                        country = "Украина"
                
                    elif message.text == "Россия":
                        bot.reply_to(message, "Вы выбрали Россию!")
                        country = "Россия"
                        
                    elif message.text == "США":
                        bot.reply_to(message, "Вы выбрали США!")
                        country = "США"
                    
                    elif message.text == "Германия":
                        bot.reply_to(message, "Вы выбрали Германию!")
                        country = "Германия"
                    
                    elif message.text == "Китай":
                        bot.reply_to(message, "Вы выбрали 中国")
                        country = "Китай"
                    choose_country(message)
                    if country != " ":
                        bot.reply_to(message, "Игра начата:\nГод-1991\nВаш баланс -\
10 000 ℇ\nУровень уважения - 10%\nВаша страна - " + country)
                    balance = 10000
                    respect = 10
                    year = 1991
                                                      
                    
bot.polling(none_stop=True)
→ Ссылка