Есть ли способ позволить моему боту discord подождать определенное время, пока он все еще может получать входные данные?

#python #discord #bots

Вопрос:

В основном я пытаюсь создать рандомизированное игровое шоу на основе чата, где участники могут проголосовать за 3 случайно выбранных изображения. В настоящее время я использую await asnycio.sleep() в качестве таймера остановки бота, чтобы сообщения не отправлялись мгновенно на канал. Чего я не могу понять или найти решение, так это процесса голосования. Как показывает мой код, бот должен подождать минуту, чтобы дать людям время проголосовать. однако asyncio.sleep() временно приостанавливает работу бота, запрещая сбор любых входных данных. Есть ли более простое решение для этого? Я очень новичок в программировании и особенно в работе с discord, поэтому буду очень признателен за любую помощь.

«‘ @bot.команда(имя=»наркоман») асинхронная защита от взлома(ctx):

 if ctx.author != bot.user:
    await ctx.send('**attention!**')
    await asyncio.sleep(2)
    await ctx.send('prepare for crack head of the day! :sunglasses:')
    await asyncio.sleep(3)
    await ctx.send('a discord friendly gameshow that you can participate in!!!!')
    await asyncio.sleep(2)
    await ctx.send('but first, i must pick the theme of todays category theme :stuck_out_tongue_winking_eye:')
    await asyncio.sleep(5)
    choices = ['woman', 'poc', 'NUDE', 'ARMED n DANGEROUS']
    theme = random.choice(choices)
    await ctx.send('hmmm, i wonder what the theme will be this time')
    await asyncio.sleep(2)
    await ctx.send('aha! the theme is: ' str(theme))
    await asyncio.sleep(2)
    file = random.choice(os.listdir('C:\Users\Brandon\AppData\Local\Microsoft\WindowsApps\crackhead\' theme))
    file2 = random.choice(os.listdir('C:\Users\Brandon\AppData\Local\Microsoft\WindowsApps\crackhead\' theme))
    if file2 == file:
        file2= random.choice(os.listdir('C:\Users\Brandon\AppData\Local\Microsoft\WindowsApps\crackhead\' theme))
    file3 = random.choice(os.listdir('C:\Users\Brandon\AppData\Local\Microsoft\WindowsApps\crackhead\' theme))
    if file3 == file:
        file3 = random.choice(os.listdir('C:\Users\Brandon\AppData\Local\Microsoft\WindowsApps\crackhead\' theme))  
    if file3 == file2:
        file3 = random.choice(os.listdir('C:\Users\Brandon\AppData\Local\Microsoft\WindowsApps\crackhead\' theme))
    await ctx.send('now is the time to vote for our favourite crackhead, here are gods chosen champions:')
    await asyncio.sleep(2)
    await ctx.send(file=discord.File(file))
    await asyncio.sleep(2)
    await ctx.send(file=discord.File(file2))
    await asyncio.sleep(2)
    await ctx.send(file=discord.File(file3))
    await asyncio.sleep(3)
    await ctx.send('now vote for your favourite crackhead!! type either 1, 2, or 3 to vote accordingly')
    await ctx.send('you have 60 seconds to vote retards')
    first = 0
    second = 0
    third = 0
    if '1' in ctx.message.content:
        first  = 1
    if '2' in ctx.message.content:
        second  = 1
    if '3' in ctx.message.content:
        third  = 1
    print(first)
    print(second)
    print(third)
    await ctx.send('votes are in! if you didnt vote, sorry retard')
    if first > second:
        if first > third:
            winner = first
    if second > first:
        if second > third:
            winner = second
    if third > first:
        if third > second:
            winner = third
    
    await ctx.send('the winner of this crack head of the day is:')
    await ctx.send(file=discord.File(winner))
    await ctx.send(':tada::tada::tada::tada::tada:')
    return
 

»’