StupidQuestion
@StupidQuestion
Задаю глупые вопросы...

Как «перезагрузить» игру?

Есть код:

@bot.message_handler(commands=['start'])
def welcome(message):
	bot.send_message(message.chat.id,'Привет! Это игра в цифры. Отгадай загаданное число ботом и получи приз! Пиши /go что бы начать! Удачи!')

@bot.message_handler(commands=['go'])
def welcome(message):
	bot.send_message(message.chat.id,'Погнали! Вводи числа...!')
	test()

lst = []

def test():
	@bot.message_handler(content_types=["text"])
	def start_game(message):
		if message.text == '1':
			bot.send_message(message.chat.id,'Ты победил! Введи /go и поехали снова!')
			lst.clear()
			return
		lst.append(message.text)
		for i in lst:
			bot.send_message(message.chat.id, i)
bot.polling()


Вывод такой:
60e599155f4c1924079659.jpeg

Как при угадывании цифры, как бы перезапустить игру. После "Ты победил! Введи /go и поехали снова!" ждать только команды /go. Если не /go, то типа - Идиот, введи /go и снова "Погнали, вводи цифры!"
Где то мелочь какая то, но я не могу сообразить...
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 1
Для начала, создайте класс-хранилище (ООП):
class Data:
	def __init__(self):
		self.lst = []
		self.go = False


На месте lst = [] в вашем коде поставьте создание хранилища: data = Data()

Далее, замените test() на data.go = True во 2ом welcome

А теперь просто уберите функцию def test(), оставив def start_game() над bot.polling() :
@bot.message_handler(content_types=["text"])
  def start_game(message):
    if message.text == '1':
      bot.send_message(message.chat.id,'Ты победил! Введи /go и поехали снова!')
      lst.clear()
      return
    lst.append(message.text)
    for i in lst:
      bot.send_message(message.chat.id, i)


Замените return на data.go = False

И добавьте условие
if data.go:
	# весь код, находящийся в def start_game()
else:
	bot.send_message(message.chat.id, "Напишите /go !")

В вашу функцию def start_game() с заменой.

Вроде всё, если что-то непонятно, обращайтесь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы