Игра в слова на питоне для бота в телеграм.
Проблема в том, что при вызове игры
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