【问题标题】:Discordpy Tasks not working as expected. No returningDiscord Py 任务未按预期工作。没有回报
【发布时间】:2020-05-05 04:35:38
【问题描述】:
@tasks.loop(seconds = 5.0)
async def remind420(self):
    print("YES")
    print(datetime.now().strftime("%H:%M"))
    if datetime.now().strftime("%H:%M") == "16:55" or datetime.now().strftime("%H:%M") == "04:20":
        await client.get_channel(499245707081940995).send("420!!")

@remind420.before_loop
async def remind420_before():
    await client.wait_until_ready()

remind420.start()

没有输出。绝对没有输出。我希望时间返回或至少是。

【问题讨论】:

  • 你能提供代码的整个上下文吗?为什么remind420 定义了self 参数而remind420_before 没有?
  • 这是在 Cog 里面吗?还是在主 bot.py 文件中?

标签: python discord discord.py discord.py-rewrite


【解决方案1】:

确保在 before_loop 函数参数中包含所有导入和 self。如果它在 cog 内,请确保在客户端之前包含 self。在前面添加小时、分钟和计数 + 自我似乎可以解决问题。

import discord
from discord.ext import commands, tasks
from datetime import date, datetime

class StackOverflow(commands.Cog):
    def __init__(self, client):
        self.client = client
        self.remind420.start()

    @tasks.loop(seconds = 5.0, minutes=0, hours=0 count=None)
    async def remind420(self):
        print("YES")
        print(datetime.now().strftime("%H:%M"))
        if datetime.now().strftime("%H:%M") == "16:55" or datetime.now().strftime("%H:%M") == "04:20":
            await self.client.get_channel(632933507399942164).send("420!!")


    @remind420.before_loop
    async def remind420_before(self):
        await self.client.wait_until_ready()

【讨论】:

    【解决方案2】:

    您在on_ready() 事件侦听器中缺少.start() 方法。

    @bot.event
    async def on_ready():
       if not remind420.is_running():
          remind420.start()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2013-05-17
      • 2010-10-08
      • 2020-09-10
      • 2021-08-20
      相关资源
      最近更新 更多