Задать вопрос
@tn-ko

Как получить сообщения от пользователя в функцию?

Игра в слова на питоне для бота в телеграм.
Проблема в том, что при вызове игры
elif message.text == "Игра в слова":
playing(message)
в качестве сообщения от пользователя приходит "Игра в слова". Как можно получить сообщение, отправленное пользователем в таком случае? Может async await?

@bot.message_handler(commands=['start'])
def welcome(message):
    sti = open('D:/JS/vscode/stickers/hi.webp', 'rb')
    bot.send_sticker(message.chat.id, sti)
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)

    
    item1 = types.KeyboardButton("Random number")
    item2 = types.KeyboardButton("How it's going?")
    item3= types.KeyboardButton("Игра в слова") #нужно что-либо сделать, не отправляя никаких сообщений в чат.

    markup.add(item1, item2, item3)
    bot.send_message(message.chat.id, "Hi there,<i> {0.first_name}!</i>\n I'm <b>{1.first_name}</b>- bot that was created for test."
    .format(message.from_user, bot.get_me()), parse_mode = 'html', reply_markup=markup)


@bot.message_handler(content_types=['text'])
def anserwing(message):
    if message.chat.type == 'private' :
        if message.text =='Random number':
            bot.send_message(message.chat.id, (random.randint(0, 101)))
        elif message.text == "How it's going?":
           
            markup = types.InlineKeyboardMarkup(row_width=2)
            item1 = types.InlineKeyboardButton("I'm fine" , callback_data='good')
            item2 = types.InlineKeyboardButton("I feel bad myself" , callback_data='bad')
            markup.add(item1,item2)
            bot.send_message(message.chat.id, 'Machines feel nothing.')
            bot.send_message(message.chat.id, 'What about you?' , reply_markup=markup)

        elif message.text == "Игра в слова":
            playing(message)            
         
@bot.message_handler(content_types=['text'])
def playing(message):
    bot.send_message(message.chat.id, 'Я первый.')
    my_file = (open('C:/Users/User/Desktop/слова.txt'))
    text = my_file.read()
    my_file.close()
    words = []
    for word in text.split():
        words.append(word)
        available_words = list(words)
        random.shuffle(available_words)
        anyword = available_words.pop()
    bot.send_message(message.chat.id, anyword)
    mess = message.text
    game_is_over == False
    while not game_is_over == False:
        if anyword[-1] == "ъ" or anyword[-1] == "ь" or anyword[-1] == "ы":
            if anyword[-2] == mess.lower()[0]:
                print("Успех")
                for candidant in available_words:
                    if candidant[0] == mess.lower()[-1]:
                        anyword = candidant
                        print("candidant  " + candidant + "  anyword  " + anyword)
                        available_words.remove(candidant)
                        break
            else:
                print("2Неверно, слово должно начинаться с буквы " + anyword[-2])

            # available_words.remove(anyword)

        elif mess.lower()[-1] == "ъ" or mess.lower()[-1] == "ь" or mess.lower()[-1] == "ы":
            for candidant in available_words:
                if candidant[0] == mess[-2].lower():
                    anyword = candidant
                    available_words.remove(candidant)
                    print("Проверка, что предпоследняя буква от пользователя =  1 букве слова . сообщ пользователя " +
                        mess + ' ответ бота ' + anyword)
                    break
            else:
                print("Введите корректное слово")

            # break
        elif mess.lower()[0] != anyword[-1]:
            print("1Неверно, слово должно начинаться с буквы " + anyword[-1])
            break
        else:
            # available_words.remove(anyword)
            for candidant in available_words:
                if candidant[0] == mess.lower()[-1]:
                    anyword = candidant
                    print("candidant  " + candidant + "  anyword  " + anyword)
                    available_words.remove(candidant)
                    break
            else:
                print("Словарный запас был иссечён, схожу за новой порцией.")
                game_is_over = True
  • Вопрос задан
  • 71 просмотр
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@fox777777777
msg = bot.send_message(message.chat.id, 'Введите слово') 
bot.register_next_step_handler(msg,playing)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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