Как сделать чтобы ответ пользователю был только после того как он ответит на голосовое сообщение!
Пример кода предоставлю ниже, код совсем отказывается ждать ответа на голосовое, а попросту шлёт текстовое фактически сразу, хотя пользователь еще не давал ответ.
# Проверяем количество сообщений от себя
my_id = (await client.get_me()).id
my_messages_count = 0
for msg in dialog_history:
if msg.from_id is not None:
my_messages_count += int(msg.from_id.user_id == my_id)
# Если еще не общались с человеком - отправляем голосовое сообщение
if my_messages_count == 0 and get_user_progress(di.entity.id) == 0:
await client.send_read_acknowledge(di.entity)
await client.send_file(di.entity, "voices\\" + random.choice(voice_msgs), voice_note=True)
print("Отправлено голосовое сообщение!")
set_user_progress(di.entity.id, 1)
# Если уже есть 1 мое сообщение, но последнее сообщение - не моё, ждем ответа пользователя
elif my_messages_count == 1 and get_user_progress(di.entity.id) == 1:
__msg = (await client.get_messages(di.entity, limit=5))[0]
if __msg.from_id != my_id:
await client.send_read_acknowledge(di.entity)
# Получаем ID последнего сообщения в диалоге
last_msg_id = __msg.id
# Ждем ответа пользователя
while True:
response = await client.get_messages(di.entity, limit=1, reverse=True)
if response and response[0].id != last_msg_id:
# Пользователь ответил, отправляем текстовое сообщение
print("Пользователь ответил, отправляем текстовое сообщение")
await client.send_message(di.entity, random.choice(text_msgs))
print("Отправлено текстовое сообщение!")
set_user_progress(di.entity.id, 2)
await asyncio.sleep(random.randint(30, 120))
break
else:
await asyncio.sleep(30)