如何在 Python 中为不和谐的机器人创建重新加载命令?

Posted

技术标签:

【中文标题】如何在 Python 中为不和谐的机器人创建重新加载命令?【英文标题】:How would I make a reload command in Python for a discord bot? 【发布时间】:2017-04-01 17:39:37 【问题描述】:

我正在尝试弄清楚如何创建一个命令来“重新加载” Discord Bot 的命令,并允许我在添加新命令时保持 bot 运行。

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

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

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

这个问题可能迟到了,但我还是会发布它

您应该查看 Discord.py 中所谓的“Cogs”是如何工作的。 The bot from 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('\NPISTOL')
        await self.bot.say(': '.format(type(e).__name__, e))
    else:
        await self.bot.say('\NOK 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('\NPISTOL')
        await self.bot.say(': '.format(type(e).__name__, e))
    else:
        await self.bot.say('\NOK 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('\NPISTOL')
        await self.bot.say(': '.format(type(e).__name__, e))
    else:
        await self.bot.say('\NOK HAND SIGN')

(Snippet from cogs/admin.py)

【讨论】:

从什么时候开始在命令本身而不是错误处理程序中处理异常?【参考方案2】:

您可以只使用 discord.py 中内置的基本重新加载

这是我的reload 命令如何完成的示例。

@bot.command()
@commands.is_owner()
async def reload(ctx, extension):
    bot.reload_extension(f"cogs.extension")
    embed = discord.Embed(title='Reload', description=f'extension successfully reloaded', color=0xff00c8)
    await ctx.send(embed=embed)

在重新加载 cog 时发送嵌入消息,但您始终可以只做 ctx.send(f'extension reloaded)

【讨论】:

以上是关于如何在 Python 中为不和谐的机器人创建重新加载命令?的主要内容,如果未能解决你的问题,请参考以下文章

试图为不和谐制作一个聊天机器人,但它不起作用

我正在为不和谐的机器人编写代码,如果字符串不区分大小写,我希望这样,但我不知道如何

ReferenceError:未定义消息

如何在 python 中为 64 位机器创建安装程序?

我如何每 6 小时提及一个不和谐机器人的用户列表-python

如何在python中为相同的并行机器创建甘特图?