Есть ли способ импортировать функции с декораторами в python для диссонирующих ботов - PullRequest
0 голосов
/ 09 апреля 2020

Как сказано в заголовке, если это возможно, я бы хотел иметь возможность импортировать некоторую часть кода, которая содержит декораторы в коде бота.

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 Ответ

2 голосов
/ 09 апреля 2020

Самый эффективный способ - использовать винтики . Это в основном классы, которые функционируют как «группировки» для команд. Такие классы могут быть добавлены через bot.add_cog(YourCogClass(bot))

Более подробное объяснение можно найти здесь .

...