Discord.py-在函数仍在运行时执行函数中的函数

Discord.py-在函数仍在运行时执行函数中的函数,discord.py,Discord.py,我正在尝试在一个函数中运行一个计时器函数,该函数在保持初始函数运行的同时编辑嵌入,但我找不到如何做到这一点。。。这是我的密码: @bot.command(别名=['pc']) 异步def注入组合(ctx、lim、反转、*规格): 异步定义计时器(时间、消息到编辑): 当时间>=0时: 等待asyncio.sleep(1) 嵌入.set_footer(text=f“•{time}秒重新启动…\n\n\u270B浇注接受器\u274c浇注环空器(seulement浇注环空器)”) 时间-=1 等待消

我正在尝试在一个函数中运行一个计时器函数,该函数在保持初始函数运行的同时编辑嵌入,但我找不到如何做到这一点。。。这是我的密码:

@bot.command(别名=['pc'])
异步def注入组合(ctx、lim、反转、*规格):
异步定义计时器(时间、消息到编辑):
当时间>=0时:
等待asyncio.sleep(1)
嵌入.set_footer(text=f“•{time}秒重新启动…\n\n\u270B浇注接受器\u274c浇注环空器(seulement浇注环空器)”)
时间-=1
等待消息\u编辑。编辑(嵌入=嵌入)
时间=30.0
嵌入=discord.embed([…..])
嵌入.set_footer(text=f“•{time}秒重新启动…\n\n\u270B浇注接受器\u274c浇注环空器(seulement浇注环空器)”)
demande=等待ctx.send(嵌入=嵌入)
等待需方。添加反应(“\u270B”)
等待需方添加反应(“\u274c”)
等待计时器(时间,需求方)
尽管如此:
尝试:
反应,user=wait bot.wait_for('reaction_add',timeout=time,check=lambda reaction,user:reaction.emoji in[u'\u270B',u'\u274c']))
除asyncio.TimeoutError外:
返回
其他:
如果reaction.emoji==u'\u270B':
如果用户!=作者:
player2=用户
打破
其他:
如果user==ctx.author:
返回

所以我想同时运行
wait timer(time,demande)
而True:[…]
,我不知道这是否可行。

您可以使用线程同时运行它们

import threading

threading.Thread(target=timer, args=[time, msg_to_edit]).start()

您可以使用线程同时运行它们

import threading

threading.Thread(target=timer, args=[time, msg_to_edit]).start()

您可以使用线程,但为什么要在异步环境中使用线程呢。我们可以简单地使用asyncio来实现这一点

async def wait_for_reaction_add():
#在这里循环
#内部指挥部
wait asyncio.gather(计时器(时间,需求方),wait_for_reaction_add()
asyncio.gather同时运行这两个协同路由

参考资料:

    • 您可以使用线程,但为什么要在异步环境中使用线程呢?我们可以简单地使用异步IO

      async def wait_for_reaction_add():
      #在这里循环
      #内部指挥部
      wait asyncio.gather(计时器(时间,需求方),wait_for_reaction_add()
      
      asyncio.gather同时运行这两个协同路由

      参考资料:

      您正在寻找多线程,或
      线程
      。这与discord.py无关。只需谷歌搜索一个线程示例,您应该能够找到它。您正在寻找多线程,或
      线程
      。这与discord.py无关。只需谷歌搜索一个线程示例,您应该能够找到它非常感谢您的回答!但当我使用线程时,它会调用一个错误
      RuntimeWarning:coroutine'pour\u combien..timer'从未被等待过
      ,但等待线程是不可能的?…是的,这是可能的。
      bot.loop.create\u任务(timer(time,msg\u to\u edit))
      谢谢您的回答!但当我使用线程时,它会调用一个错误
      运行时警告:从未等待过协同程序'pour\u combien..timer'
      但不可能等待线程?…是的,这是可能的。
      bot.loop.create_任务(timer(time,msg\u to\u edit))