Как сделать эту паузу между отправкой сообщений ботом?
Я создаю своего ВК бота и у меня возникла проблема: Я сделал так, что когда пользователь пишет "начать историю", то бот начинает отправлять ему огромный текст, но по предложениям с паузой в несколько секунд. Как сделать эту паузу между отправкой сообщений ботом?
elif body.lower() == "начать историю":
vk.method("messages.send", {"peer_id": id, "message": "12 января 2009 года.", "random_id": int(time.time())})
vk.method("messages.send", {"peer_id": id, "message": "Холодный зимний вечер.", "random_id": int(time.time())})
vk.method("messages.send", {"peer_id": id, "message": "Вы сидели в своей захолустной однушке и страдали, откровенно говоря, хренью.", "random_id": int(time.time())})
Ответы (2 шт):
Для того, чтобы делать паузу между отправками сообщений, можно использовать функцию sleep:
import time
print('Hello ...')
time.sleep(10)
print('... World!')
В вашем случае:
vk.method("messages.send", {"peer_id": id, "message": "12 января 2009 года.", "random_id": int(time.time())})
time.sleep(10)
vk.method("messages.send", {"peer_id": id, "message": "Холодный зимний вечер.", "random_id": int(time.time())})
time.sleep(10)
vk.method("messages.send", {"peer_id": id, "message": "Вы сидели в своей захолустной однушке и страдали, откровенно говоря, хренью.", "random_id": int(time.time())})
Но будьте аккуратны, потому что данная функция заблокирует все ваше приложение на 10 секунд. То есть второй пользователь параллельно не получит ответ от бота вовремя, а лишь спустя 10 секунд. Вам бы в сторону asyncio и асинхронных библиотек для работы с VK смотреть тогда.
Для асинхронного кода функция sleep будет несколько иначе:
import asyncio
async def main():
print('Hello ...')
await asyncio.sleep(10)
print('... World!')
# Python 3.7+
asyncio.run(main())