Discord.py 重写,设置后台任务,后台任务不加载

Posted

技术标签:

【中文标题】Discord.py 重写,设置后台任务,后台任务不加载【英文标题】:Discord.py rewrite, Setting up background tasks, background tasks not loading 【发布时间】:2019-05-14 02:47:35 【问题描述】:

我似乎无法弄清楚如何激活我的后台任务运行时间。如果我让代码在事件之后运行,它应该会改变角色的颜色。但是将其设置为在后台工作总是失败。也没有错误,我的猜测是任务永远不会加载。

#Login and bot initializer
@client.event
async def on_ready():
    print('Logged in as')
    print(f"Username:  client.user.name")
    print(f"User ID:  client.user.id")
    print('---------------------------------')


#Runtime Background Tasks
async def runtime_background_task():
    id=client.get_guild(564683412699480094)
    colours = [discord.Colour(0xe91e63),discord.Colour(0x0000FF0),discord.Colour(0x00FF00),discord.Colour(0xFF0000)]

    print("BACKGROUND TASK>> Functional")

    await client.wait_until_ready()
    while not client.is_closed:
        i = random.randint(0, len(colours))
        await asyncio.sleep(1)
        print(i)
        for role in id.roles:
            if role.name == 'bot':
                await role.edit(server=id, role=role, colour=colours[i])
                break

【问题讨论】:

已禁止变色机器人以避免淹没 API,以防您不知道。 【参考方案1】:

您可以使用discord.ext.tasks 扩展名来简化自己的操作。在这里,我们有一个任务每秒运行一次以更改角色的颜色。

我没有看到你在哪里定义了 id,所以我使用 before_loop 从一个 id 初始化服务器:

import discord
from discord.utils import get
from discord.ext.tasks import loop
from discord.ext.commands import Bot
from random import choice

bot = Bot("!")

colours = [discord.Colour(0xe91e63), discord.Colour(0x0000FF0), discord.Colour(0x00FF00), discord.Colour(0xFF0000)]

guild_id = 12345
role_name = "bot"
role_to_change = None

@loop(seconds=1)
async def colour_change():
    await role_to_change.edit(colour=choice(colours))
    print("Task")

@colour_change.before_loop
async def colour_change_before():
    global role_to_change
    await bot.wait_until_ready()
    guild = bot.get_guild(guild_id)
    role_to_change = get(guild.roles, name=role_name)

colour_change.start()
bot.run("token")

【讨论】:

ModuleNotFoundError: No module named 'discord.ext.tasks' 另外我在代码中添加了 ID,这样更容易理解 ;) 您可能需要更新您的 discord.py 版本:pip install -U discord.py 更新修复了这个问题,但代码似乎也没有完成任务。没有错误,但实际上也没有做任何事情。 @KA 我错过了colour_change.start() 我像这样添加了代码,但直到无法正常工作pastebin.com/x8MH7ZFN

以上是关于Discord.py 重写,设置后台任务,后台任务不加载的主要内容,如果未能解决你的问题,请参考以下文章

Discord.py 从后台线程关闭 Bot

在 discord.py 中显示设置前缀的命令(重写)

任务不删除消息,discord.py

如何在 discord.py 中循环任务

如何让机器人在 discord.py 重写中为频道设置慢速模式?

UWP 从后台任务设置锁屏/壁纸