有没有办法为不和谐的机器人在python中使用装饰器导入函数

时间:2020-04-09 11:30:36

标签: python python-3.x python-3.7 discord.py

就像标题中所说的那样,如果可能的话,我希望能够在机器人代码中导入包含装饰符的部分代码。

from discord.ext import commands

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

if __name__ == "__main__":
    token = 'XXXXXXXXXXXXXXXXXXX'
    prefix = '!'
    bot = commands.Bot(command_prefix=commands.when_mentioned_or(
        prefix), description='Useless - Updates')
    bot.add_cog(Updates(bot))
    bot.run(token)

我有3个或更多类似的子模块(我有一个主文件来检查查询该类的模块,这里是“更新”),并且我有一个通用的代码部分:

@commands.Cog.listener()
async def on_command_error(self, ctx, error):
    if isinstance(error, commands.CommandNotFound):
        return
    raise error

@commands.group(name='stop', hidden=True)
@commands.is_owner()
async def stop(self, ctx):

    await ctx.message.add_reaction('\N{THUMBS UP SIGN}')
    await self.bot.logout()
    sys.exit()

@commands.group(name='reload', hidden=True)
@commands.is_owner()
async def reload(self, ctx):

    await ctx.message.add_reaction('\N{THUMBS UP SIGN}')
    await self.bot.logout()
    sys.stdout.flush()
    os.execv(sys.executable, [sys.executable, __file__])

有人吗?

1 个答案:

答案 0 :(得分:2)

最有效的方法是使用cogs。这些基本上是用作命令“分组”的类。然后可以通过bot.add_cog(YourCogClass(bot))

添加此类

here可以找到更详尽的解释。