Решил создать простенького телеграм бота с игрой "камень, ножницы бумага".
Сам бот работает корректно, только вот после того как ты отвечаешь боту "да" на "Хотите ли вы сыграть еще" он не реагирует, для того чтобы он начал игру нужно написать что-то еще раз. Код выложил ниже
import random
import telebot
from telebot import types
bot = telebot.TeleBot('6454160901:AAFF0gNfEC2NveH5JTS4kLuGzZ6IEXh9I8I')
choice = ["Камень?", "Ножницы", "Бумага"]
computer = random.choice(choice)
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, 'Привет, готов начать игру?')
bot.register_next_step_handler(message, new_game)
@bot.message_handler()
def new_game(message):
markup = types.ReplyKeyboardMarkup()
rock = types.KeyboardButton('Камень?')
scissors = types.KeyboardButton('Ножницы')
paper = types.KeyboardButton('Бумага')
markup.row(rock)
markup.row(scissors, paper)
bot.send_message(message.chat.id, 'Камень?, ножницы или бумага?', reply_markup=markup)
bot.register_next_step_handler(message, statements)
def statements(message):
if message.text not in choice:
bot.send_message(message.chat.id, 'Ошибка! Необходимо нажимать только на кнопки!')
elif message.text == computer:
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Ничья!')
elif message.text == 'Камень?':
if computer == 'Бумага':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы проиграли!')
elif computer == 'Ножницы':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы выиграли!')
elif message.text == 'Ножницы':
if computer == 'Бумага':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы выиграли!')
elif computer == 'Камень?':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы проиграли!')
elif message.text == 'Бумага':
if computer == 'Ножницы':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы проиграли!')
elif computer == 'Камень?':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы выиграли!')
bot.send_message(message.chat.id, 'Хотите сыграть еще раз?')
bot.register_next_step_handler(message, retry)
def retry(message):
if message.text.lower() != 'да':
bot.send_message(message.chat.id, 'Прощай.. (ты всегда можешь сыграть еще с помощью команды /start)')
else:
bot.register_next_step_handler(message, new_game)
bot.infinity_polling()
Сам бот работает корректно, только вот после того как ты отвечаешь боту "да" на "Хотите ли вы сыграть еще" он не реагирует, для того чтобы он начал игру нужно написать что-то еще раз. Код выложил ниже
import random
import telebot
from telebot import types
bot = telebot.TeleBot('6454160901:AAFF0gNfEC2NveH5JTS4kLuGzZ6IEXh9I8I')
choice = ["Камень?", "Ножницы", "Бумага"]
computer = random.choice(choice)
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, 'Привет, готов начать игру?')
bot.register_next_step_handler(message, new_game)
@bot.message_handler()
def new_game(message):
markup = types.ReplyKeyboardMarkup()
rock = types.KeyboardButton('Камень?')
scissors = types.KeyboardButton('Ножницы')
paper = types.KeyboardButton('Бумага')
markup.row(rock)
markup.row(scissors, paper)
bot.send_message(message.chat.id, 'Камень?, ножницы или бумага?', reply_markup=markup)
bot.register_next_step_handler(message, statements)
def statements(message):
if message.text not in choice:
bot.send_message(message.chat.id, 'Ошибка! Необходимо нажимать только на кнопки!')
elif message.text == computer:
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Ничья!')
elif message.text == 'Камень?':
if computer == 'Бумага':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы проиграли!')
elif computer == 'Ножницы':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы выиграли!')
elif message.text == 'Ножницы':
if computer == 'Бумага':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы выиграли!')
elif computer == 'Камень?':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы проиграли!')
elif message.text == 'Бумага':
if computer == 'Ножницы':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы проиграли!')
elif computer == 'Камень?':
bot.send_message(message.chat.id, text=computer)
bot.send_message(message.chat.id, 'Вы выиграли!')
bot.send_message(message.chat.id, 'Хотите сыграть еще раз?')
bot.register_next_step_handler(message, retry)
def retry(message):
if message.text.lower() != 'да':
bot.send_message(message.chat.id, 'Прощай.. (ты всегда можешь сыграть еще с помощью команды /start)')
else:
bot.register_next_step_handler(message, new_game)
bot.infinity_polling()