@chezas

Как заставить дискорд бота отправлять сообщения в случайное время?

Нужна помощь. Есть бот и текстовый канал. Есть набор реплик. Задача: заставить бота отправлять случайно выбранные реплики в случайное время. Есть ли способ это реализовать? (Сам в питоне очень недавно, поэтому прошу, пожалуйста, чуть-чуть поподробнее)
  • Вопрос задан
  • 2257 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Ну для начала определи, что понимается под случайным временем.
Например, "одно сообщение через каждые t секунд, где t - равномерно распределённое число от 300 до 3600"
Или "выбрать случайный момент времени в сутках, дождаться его наступления, отправить реплику"
Или "пусть бот каждый N секунд бросает кубик, если выпала единица - выводим сообщение".
Все три способа подразумевают разную реализацию и разные ограничения.

Я полагаю, делаешь бота на discord.py?
Тогда копай в сторону:
1. модуля random, чтобы понят как генерировать случайные числа
2. раздел документации по discord.py посвящённый длительным процессам.

Логика примерно такая:
1. Разберись по примеру выше, как делать простой цикл, чтобы бот писал что-то в консоль.
2. Используй asyncio.sleep() чтобы задержать выполнение цикла на какое-то время.
3. Научись генерить случайные числа с помощью модуля random, и сделай задержку случайной.
4. Научись делать случайный выбор сообщения с помощью random.choice()
5. Научись отправлять сообщения в канал а не в консоль (метод, который пригодится)

Подробнее - только кодом.
Ответ написан
@Krytiu_govnocoder
Чел выше расписал всё понятно, хотя было бы проше скинуть уже код. Если не понял досех как это делать, то вот код, он примитивный, дорабатывать уже сам будешь

@commands.Cog.listener()
async def on_ready(self):
while True:
channel = self.client.get_channel(ID канала)
delay = random.uniform(5, 10)
await asyncio.sleep(delay)
await channel.send("твой текст")
Ответ написан
Ваш ответ на вопрос

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

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