Discord Py 任务未按预期工作。没有回报

Posted

技术标签:

【中文标题】Discord Py 任务未按预期工作。没有回报【英文标题】:Discordpy Tasks not working as expected. No returning 【发布时间】: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 文件中? 【参考方案1】:

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

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

class ***(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()

【讨论】:

以上是关于Discord Py 任务未按预期工作。没有回报的主要内容,如果未能解决你的问题,请参考以下文章

随机消息发送未按预期工作 discord.js

Django urls.py。未按预期工作

Client.guilds.get() 未按预期工作

烧瓶中的蓝图模板文件夹未按预期工作

Ant中的Checksum任务未按预期工作

Postgresql 可序列化事务未按预期工作