如何停止计时器discord.py

时间:2019-01-22 16:46:05

标签: python python-3.x discord discord.py

所以我有这个设置计时器的脚本,但是我只是不知道如何用命令停止它

jb=[]
@client.command(pass_context=True)
async def timer(con,time=10):
    timer = time
    ct = con.message.channel.id
    msg = await client.send_message(con.message.channel, time)
    jb.append(con.message.channel.id)
    for i in range(time):
        await asyncio.sleep(1)
        timer -= 1
        await client.edit_message(msg, new_content=timer)
    num = jb.index(ct)
    del jb[num]
    await client.say("Timer complete")

1 个答案:

答案 0 :(得分:0)

您可以使用client.wait_for_message代替asyncio.sleep。如果您的机器人与之通信的人在这段时间内发送了一条消息,您可以break跳出循环并继续进行交互

@client.command(pass_context=True)
async def timer(ctx, time: int=10):
    msg = await client.send_message(ctx.message.channel, time)
    for newtime in range(time-1, 0, -1):
        resp = await client.wait_for_message(author=ctx.message.author, content="stop", timeout=1)
        if resp:  # They sent a message
            break
        else:
            await client.edit_message(msg, new_content=newtime)
    else:
        # This block is executed if the timer counted all the way down without interruption

如果您需要更复杂的接受标准,则可以编写一个Message -> bool函数并将其作为check参数传递给wait_for_message

相关问题