【问题标题】:How to create background task inside a cog in discord.py?如何在 discord.py 的 cog 内创建后台任务?
【发布时间】:2021-03-03 23:16:45
【问题描述】:

我正在尝试在 cog 内创建任务。这是我目前拥有的代码,

import discord
import asyncio
import schedule
from discord.ext import commands


class BotTasks(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

        self.bg_task = self.loop.create_task(self.mytask())
        

    def job():
        print("task")
        
    schedule.every().day.at("19:44").do(job)

    async def mytask():
        
        while True:
            schedule.run_pending()
            await asyncio.sleep(1)



def setup(bot):
    bot.add_cog(BotTasks(bot))

我觉得代码是正确的,但问题在于self.bg_task = self.loop.create_task(self.mytask()),不知道还有什么可以代替它。 谢谢。

【问题讨论】:

    标签: discord discord.py schedule background-task


    【解决方案1】:

    您可以简单地使用discord.ext.tasks

    from discord.ext import tasks
    
    class BackgroundTasks(commands.Cog):
        def __init__(self, bot):
            self.bot = bot
     
        @tasks.loop(seconds=5) # <- will do this every 5 seconds
        async def my_background_task(self, *args):
            # do something
    
    

    开始吧

    my_background_task.start(some_arguments) # <- you can put this in a command or in the on_ready event
    

    这里有一些更有用的功能

    loop.stop()
    loop.cancel()
    loop.restart()
    

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多