python - 在 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() 返回一个嵌入。
解决方案
这是因为googlesearch
使用requests
which 阻塞了整个代码
阅读更多关于“阻塞意味着什么”:这里
解决方案:
要么使用aiohttp
直接向 Google 执行异步 HTTP 请求,要么找到使用满足您需求的异步 HTTP 请求的模块
推荐阅读
- javascript - 具有多个图像的图像滑块需要在鼠标滑动时移动
- python - Selenium 发布请求 python
- ios - 在 SwiftUI 中滚动时隐藏导航栏?
- django - 将相关对象放入单个查询集中?
- c - 如何在屏幕上显示原始像素数组?
- excel - 带 IF 逻辑的 SUMPRODUCT 函数
- here-api - 这里 SDK 颤振不显示地点图像。始终不返回图像数据
- swiftui - 在 SwiftUI 中处理 tvOS 上的焦点事件更改
- d3.js - d3 过渡等待上一个?
- python - 自动摘要生成的文档缺少除 __init__ 之外的所有 dunder 方法