如果... elif语句顺序执行,则discord.py中的“ for”循环不会执行

时间:2020-05-14 03:25:38

标签: python async-await discord.py

正如标题所述,我使用discord.py创建了一个简单的bot,它可以响应一系列命令(为简洁起见,代码已被截断):

import discord
from discord.ext import commands
bot = commands.Bot(command_prefix = '!')

@bot.command()
async def respond_to_me(ctx):

    my_list = [1, 2, 3, 4]

    for item in my_list:
        if item == 1: await ctx.send("You said one")
        elif item == 2: await ctx.send("You said two")
        elif item == 3: await ctx.send("You said three")
        elif item == 4: await ctx.send("You said four")
        else: pass

bot.run(bot_token)

但是,用my_list = [1, 2, 3, 4]执行代码有时会返回以下响应(随着重复执行,该响应会随机变化):

"You said one"
"You said three"
"You said two"
"You said four"

发生了什么事?我不明白简单的代码在每次执行时如何返回不同的结果?我该怎么做才能防止这种情况发生?

1 个答案:

答案 0 :(得分:1)

一个大概的解决方案是在每次迭代之后花一点时间Project |--ModuleA (android application) |--src/test/... |--build |--reports |--tests |--index.html (testresults) |--.. |--.. |--ModuleB (android library) |--src/test/... |--build |--reports |--tests |--index.html (testresults) |--.. |--.. |--ModuleC (android library) |--src/test/... |--build |--reports |--tests |--index.html (testresults) |--.. |--.. (需要asyncio.sleep()),因此每个请求都有时间以正确的顺序进行处理。