Как заставить несогласного бота в python отправлять определенное сообщение в канале после X времени? - PullRequest
0 голосов
/ 06 октября 2018

Я хочу, чтобы я мог набрать! Setreminder "Опубликовать эту строку позже" через 3 часа, и бот опубликует это в канале через 3 часа.

Будет ли работать приведенный ниже код, если я изменюЭто?Или есть лучший способ сделать это?

async def my_background_task():
    await client.wait_until_ready()
    counter = 0
    channel = discord.Object(id='channel_id_here')
    while not client.is_closed:
        counter += 1
        await client.send_message(channel, counter)
        await asyncio.sleep(60) # task runs every 60 second

Если бы я выполнил эту команду, смог бы ли я использовать другие команды в то же время, пока бот ждал публикации?

1 Ответ

0 голосов
/ 06 октября 2018

Вы можете сделать что-то вроде

@client.command(pass_context=True)
async def setreminder(ctx,time:int,*arg:str):
  await asyncio.sleep(time)
  await client.say(f"\"{' '.join(arg)}\"")

, где вы будете запускать !setreminder 5 Hello World (5 - количество секунд, которое вы хотите ждать)

ЕслиЯ выполнил эту команду, смогу ли я использовать другие команды одновременно, пока бот ждал публикации?

Да, вы можете использовать другие команды из-за природы asyncio.sleep

...