Почему не записывается новое значение в глобальную переменную?
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)