Задать вопрос
@Dmitriy_Tar

Не считывает часть кода на Python, можно ли как-то исправить?

Запускаю код захожу в бота в Telegram, всё работает кроме кнопок "Назад" и "Помощь". Мне кажется, что он просто не считывает эту часть кода, а почему не знаю.

import telebot
import random
import logging

from telebot import types
import strings as st

bot = telebot.TeleBot(TOKEN)
telebot.logger.setLevel(logging.INFO)

storage = dict()

def init_storage(user_id):
    storage[user_id] = dict(attempt=None, random_digit=None)

def set_data_storage(user_id, key, value):
    storage[user_id][key] = value

def get_data_storage(user_id):
    return storage[user_id]

@bot.message_handler(commands=['start'])
def start(message):
    if (message.text == '/start'):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton(st.ANSW_START)
        btn2 = types.KeyboardButton(st.ANSW_HELP)
        markup.add(btn1,btn2)
        bot.send_message(message.chat.id, text=st.ANSW_HIFROM_BOT, reply_markup=markup)

@bot.message_handler(func=lambda messsage: messsage.text.lower() == '\U00002705выбрать игру\U00002705')
def choose_game_or_start(message):
    if(message.text == st.ANSW_START):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton(st.GAME_DIGIT)
        button2 = types.KeyboardButton(st.GAME_KNB)
        button3 = types.KeyboardButton(st.ANSW_MENU)
        markup.add(button1, button2, button3)
        bot.send_message(message.chat.id, text=st.CHOOSE_GAME, reply_markup=markup)

@bot.message_handler(func=lambda message: message.text.lower() == 'игра "угадай число"')
def digitgames(message):
    init_storage(message.chat.id)
    attempt = 5
    set_data_storage(message.chat.id, "attempt", attempt)
    bot.send_message(message.chat.id, f'Игра "Угадай число"!\nКоличество попыток: {attempt}')
    random_digit = random.randint(1, 10)
    print(random_digit)
    set_data_storage(message.chat.id, "random_digit", random_digit)
    print(get_data_storage(message.chat.id))
    bot.send_message(message.chat.id, 'Готово! Я загадал число от 1 до 10')
    bot.send_message(message.chat.id, 'Попробуй угадать число')
    bot.register_next_step_handler(message, process_digit_step)

def process_digit_step(message):
    user_digit = message.text
    if not user_digit.isdigit():
        msg = bot.reply_to(message, 'Вы ввели не цифры, введите пожалуйста цифры')
        bot.register_next_step_handler(msg, process_digit_step)
        return
    attempt = get_data_storage(message.chat.id)["attempt"]
    random_digit = get_data_storage(message.chat.id)["random_digit"]
    if int(user_digit) == random_digit:
        bot.send_message(message.chat.id, f'Поздравляю! Ты угадал, это была цифра:  {random_digit}')
        init_storage(message.chat.id)
        return
    elif attempt > 1:
        attempt -= 1
        set_data_storage(message.chat.id, "attempt", attempt)
        bot.send_message(message.chat.id, f'Упс! Я загадал не это число, осталось попыток:  {attempt}')
        bot.register_next_step_handler(message, process_digit_step)
    else:
        bot.send_message(message.chat.id, f'Вы проиграли! Не растраивайтесь повезёт в другой раз! Это было число: {random_digit}')
        init_storage(message.chat.id)
        return

@bot.message_handler(func=lambda message: message.text.lower() == 'камень' or 'ножницы' or 'бумага' or 'игра "камень, ножницы, бумага"')
def cuefa_start_game(message):
    if (message.text == st.GAME_KNB):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        bttn1 = types.KeyboardButton(st.STONE)
        bttn2 = types.KeyboardButton(st.SICCORS)
        bttn3 = types.KeyboardButton(st.PAPER)
        bttn4 = types.KeyboardButton(st.ANSW_MENU)
        markup.add(bttn1, bttn2, bttn3, bttn4)
        bot.send_message(message.chat.id, text=st.BOT_CUEFA, reply_markup=markup)
    elif (message.text == 'камень' or 'ножницы' or 'бумага'):
        choice = random.choice(['Камень', 'Ножницы', 'Бумага'])
        if message.text == choice:
            bot.send_message(message.chat.id, text=f'Боевая ничья! Бот тоже выбрал {choice}')
        else:
            if message.text == 'Камень':
                if choice == 'Ножницы':
                    bot.send_message(message.chat.id, text=f'Поздравляю с победой! У меня были {choice}')
                else:
                    bot.send_message(message.chat.id, text=f'К сожалению Вы проиграли. У меня была {choice}')
            elif message.text == 'Ножницы':
                if choice == 'Бумага':
                    bot.send_message(message.chat.id, text=f'Поздравляю с победой! У меня была {choice}')
                else:
                    bot.send_message(message.chat.id, text=f'К сожалению Вы проиграли. У меня был {choice}')
            elif message.text == 'Бумага':
                if choice == 'Камень':
                    bot.send_message(message.chat.id, text=f'Поздравляю с победой! У меня был {choice}')
                else:
                    bot.send_message(message.chat.id, text=f'К сожалению Вы проиграли. У меня были {choice}')

@bot.message_handler(content_types=['text'])
def back_or_help(message):
    if(message.text == st.ANSW_MENU):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton(st.ANSW_START)
        button2 = types.KeyboardButton(st.ANSW_HELP)
        markup.add(button1, button2)
        bot.send_message(message.chat.id, text=st.ANSW_GLAVNAYA, reply_markup=markup)
    elif(message.text == st.ANSW_HELP):
        bot.send_message(message.chat.id, text=st.ANSW_HOWISIT_WORK)

if __name__ == '__main__':
    bot.skip_pending = True
    bot.polling()

Если надо переписать код, то как? Заранее спасибо!)
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Средний 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

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