首页 > 解决方案 > 在 discord.py 中使两个或多个命令能够同时运行

问题描述

在我的 Discord 机器人上,我有一个命令可以在 Google 中搜索用户输入的任何内容。但如果此命令同时在两个或多个不同的地方运行,那么第一个搜索必须在第二个搜索开始之前加载。我怎样才能让两者同时运行?这是搜索的代码:

@bot.command("search")
async def search(ctx, *, arg=""):
    if arg == "":
        await ctx.send(embed=error(title="No Query", desc="You need to put in what you want to search"))
    else:
        
        loading = await ctx.send(embed=msg(thumbnail="https://media4.giphy.com/media/dOmQEMUbT2fWKy7hCA/giphy.gif"))
        results = []
        for j in googlesearch.search(arg, tld='com', lang='en', num=10, start=0, stop=10, pause=2.0, safe="on"):
            results.append(j)
        answer = ""
        for i in range(0, len(results)):
            answer += results[i] + "\n"
        await loading.delete()
        if answer.replace(" ", "") == "":
            answer = "No Results (aww man)"
        await ctx.send(embed=msg(title="Search results", desc=answer + "\n Most relevant results at the top."))

进口是import googlesearch.
msg() 返回一个嵌入。

标签: pythonpython-3.xdiscorddiscord.py

解决方案


这是因为googlesearch使用requestswhich 阻塞了整个代码

阅读更多关于“阻塞意味着什么”:这里

解决方案:

要么使用aiohttp直接向 Google 执行异步 HTTP 请求,要么找到使用满足您需求的异步 HTTP 请求的模块


推荐阅读