python - 删除嵌入后发送另一个嵌入不起作用

标签 python discord discord.py

这个标题毫无意义,但我会在这里澄清。我有这个命令,它将发送一个嵌入并从 JSON 中获取数据,然后将其发送回嵌入内部,我想让它在 5 秒后删除并发送另一个 JSON。

代码如下:

@client.command()
async def test(ctx):
  with open('test.json', 'r') as homeworkfile:
    homework = json.loads(homeworkfile.read())
  embed=discord.Embed(title='Test', description=f"Here's the saved contents for test: {homework}", color=0x9932CC)
  deletewarn=discord.Embed(title='Answer ticket expired.', description="Oops, looks like this ticket expired. Try saying !ss again?", color=0x9932CC)
  await ctx.send(embed=embed, delete_after=5)
  time.sleep(5)
  await ctx.send(embed=deletewarn)

当我使用该命令时,它会在 5 秒后发送另一个嵌入内容,但另一个嵌入内容直到几秒钟后才会删除。

如何解决这个问题?

最佳答案

await ctx.send(embed=embed, delete_after=5) 使用 asyncio.sleep 函数在删除消息之前等待。

您使用阻塞调用:time.sleep(5)。它会阻止您的所有代码,还会阻止 await ctx.send(embed=embed, delete_after=5) 计时器执行。

您应该使用asyncio.sleep:

import asyncio


@client.command()
async def test(ctx):
  with open('test.json', 'r') as homeworkfile:
    homework = json.loads(homeworkfile.read())
  embed=discord.Embed(title='Test', description=f"Here's the saved contents for test: {homework}", color=0x9932CC)
  deletewarn=discord.Embed(title='Answer ticket expired.', description="Oops, looks like this ticket expired. Try saying !ss again?", color=0x9932CC)
  await ctx.send(embed=embed, delete_after=5)
  await asyncio.sleep(5)
  await ctx.send(embed=deletewarn)

关于python - 删除嵌入后发送另一个嵌入不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70687114/

相关文章:

python - 我如何知道 "path"是否位于 FAT32 分区中?

在Linux上模拟键盘/鼠标输入的Python库?

python-3.x - 在 discord.py 中删除机器人的消息

python - 用 Python 编写 Discord 机器人 - 不知道如何设置 react 角色(第 2 部分)

python - Django string_if_invalid 和默认值

python - DataFrame 不会为新的 pandas 列赋值

javascript - 图片未出现在 Discord.js Bot 的嵌入 URL 中

javascript - 角色 Discord.js(在嵌入中打印角色)

python - 如何从公会 discord.py 中的所有成员中删除多个角色

python - Discord bot 未按名称查找 channel