我将如何在 Python 中为 discord bot 执行重新加载命令?

Map*_*oot 2 python bots discord discord.py

我想弄清楚如何制作一个命令来“重新加载”Discord Bot 的命令,并允许我在添加新命令时保持机器人运行。

这只是让我的生活更轻松,所以我不必重新启动机器人。

我正在使用 discord.py 库与 discord API 进行交互。

我怎样才能做到这一点?

Der*_*ddy 6

这个问题可能晚了,但无论如何我都会发布

您应该查看 Discord.py 中所谓的“Cogs”是如何工作的。来自 Rapptz 的机器人(维护 Discord.py 的人)有一些很好的例子,如何将你的机器人组织成 Cogs 以及如何加载/卸载/重新加载它们(参见cogs/admin.py相关内容)。

@commands.command(hidden=True)
@checks.is_owner()
async def load(self, *, module : str):
    """Loads a module."""
    try:
        self.bot.load_extension(module)
    except Exception as e:
        await self.bot.say('\N{PISTOL}')
        await self.bot.say('{}: {}'.format(type(e).__name__, e))
    else:
        await self.bot.say('\N{OK HAND SIGN}')

@commands.command(hidden=True)
@checks.is_owner()
async def unload(self, *, module : str):
    """Unloads a module."""
    try:
        self.bot.unload_extension(module)
    except Exception as e:
        await self.bot.say('\N{PISTOL}')
        await self.bot.say('{}: {}'.format(type(e).__name__, e))
    else:
        await self.bot.say('\N{OK HAND SIGN}')

@commands.command(name='reload', hidden=True)
@checks.is_owner()
async def _reload(self, *, module : str):
    """Reloads a module."""
    try:
        self.bot.unload_extension(module)
        self.bot.load_extension(module)
    except Exception as e:
        await self.bot.say('\N{PISTOL}')
        await self.bot.say('{}: {}'.format(type(e).__name__, e))
    else:
        await self.bot.say('\N{OK HAND SIGN}')
Run Code Online (Sandbox Code Playgroud)

摘自cogs/admin.py