【问题标题】:Is there a way to import functions with decorators in python for discord bots有没有办法在 python 中为不和谐机器人导入带有装饰器的函数
【发布时间】:2020-07-22 00:20:34
【问题描述】:

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

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__])

有人吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • reload 命令没有按预期工作,但是谢谢,我没有那么简单。我会尝试解决这个问题..
    • 其实是 sys.argv[0] 做的,我把 __file 改成了 sys.argv[0]
    猜你喜欢
    • 2023-04-04
    • 2019-06-30
    • 2012-05-11
    • 2021-03-27
    • 2021-06-30
    • 2020-11-19
    • 2014-07-21
    • 2023-03-08
    • 2019-04-13
    相关资源
    最近更新 更多