每个 Cog 都有不同的前缀?

maa*_*uuu 4 python discord.py

是否可以为每个齿轮设置前缀?

例如,具有管理命令的 Cog 具有前缀pa!和一些有趣命令的 cog pf!

不使用on_message.

编辑:我想我必须更详细:

  • 我的 serverstats 齿轮有一个名为“stats”的命令,当我使用时应该触发该命令pa!
  • 我的有趣齿轮也有一个“统计”命令。当我使用时应该触发这个pf!

到目前为止我唯一的想法是将默认前缀设置为p!然后调用命令astats。但我想有更好的方法。

Pat*_*ugh 5

为了扩展 Maxsc 的答案,您可以定义一个cog_check方法,该方法将在 cog 的每个命令之前调用:

class FunCommands(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self.prefix = "pf!"
    async def cog_check(self, ctx):
        return ctx.prefix == self.prefix
Run Code Online (Sandbox Code Playgroud)

在主代码中,您可以使用可调用函数来消耗 cogs 中的前缀来确定要注意哪些前缀。这将被传递为你的command_prefix

def get_prefixes(bot, message):
    cog_prefixes = (cog.prefix for cog in bot.cogs.values() if hasattr(cog, 'prefix'))
    default_prefixes = ("!")
    return (*cog_prefixes, *default_prefixes)
Run Code Online (Sandbox Code Playgroud)