Nextcord,为什么我不能在@tasks.loop 中执行此操作?

Nextcord, why can't i do this in @tasks.loop?

Nextcord 接受@tasks.loop 中的 datetime.time 列表,但我需要更改列表。我尝试这样做:

class peter_teste(commands.Cog):
    
    def __init__(self, bot):
        super().__init__()
        self.bot = bot
        self.peter.start()

    def peter_times(self):
        peter_hours = []
        #change the default list
        return peter_hours

    @tasks.loop(time=self.peter_times())
    async def peter(self):
        #do something

我在@tasks.loop(time=self.peter_times())

中收到错误“self is not defined”

要在装饰器中使用 peter_times,它不能使用 class 的方法,因为装饰器是在 class 初始化之前处理的,(所以 self 没有在那里定义)。您可以在 class 之外设置这些时间,或者在 before_loop 中设置它们并在那里更改间隔。

change_interval可用于在执行过程中更改时间。