使帮助命令打印未排序的命令

时间:2020-06-16 15:03:48

标签: python discord.py

试图弄清楚如何使用此属性:sort_commands

好像它在那里,所以我可以将其默认值(True)更改为False,但我不知道该怎么做。

到目前为止,每个人都建议我使用bot.remove_command("help"),然后从头开始实施我自己的

但是似乎缺少了一些东西。该属性存在是有原因的,不是吗?必须是使用此属性的一种更好的方法,而不是从头开始实施整个命令。

2 个答案:

答案 0 :(得分:1)

您可以创建默认帮助命令的新实例:

from discord.ext import commands

help_command = commands.DefaultHelpCommand(sort_commands=False) # Also set other options here

# And pass in the new help command into the bot so it knows to use it
bot = commands.Bot(command_prefix="!", help_command=help_command)

参考:

答案 1 :(得分:1)

我设法通过以下方式实现了自己的目标:

我创建了自己的帮助命令,该命令从DefaultHelpCommand扩展(继承),然后覆盖send_bot_help协程,并更改排序以通过命令description字段而不是命令名称进行比较字段(我更喜欢创建自己的order字段等,但是找不到正确的方法,所以我使用了现有的字段。)

然后我像这样订购命令:

@commands.command(help="A helpful description of cmd1", name="commandName", description='1')
@commands.command(help="A helpful description of cmd2", name="commandName2", description='2')

以下是课程:

class MyHelpCommand(DefaultHelpCommand):
    async def send_bot_help(self, mapping):
       # ... everything up here copy-pased from original superclass
                                 # This used to be c.name
       commands = sorted(commands, key=lambda c: c.description)
       # ... The rest is also copy-pasted  

然后我像建议的那样使用它:

help_command = MyHelpCommand()
client = commands.Bot(command_prefix=Config.COMMAND_PREFIX, help_command=help_command)