Заставить команду справки печатать команды без сортировки - PullRequest
1 голос
/ 16 июня 2020

Пытаюсь понять, как использовать этот атрибут: sort_commands

Похоже, что он есть, так что я могу изменить его значение по умолчанию (True) на False, но я могу ' t выяснить, как это сделать.

До сих пор все предлагали мне использовать bot.remove_command("help"), а затем реализовать мою собственную с нуля.

Но, похоже, что-то не хватает. Этот атрибут существует не просто так? Должен быть лучший способ использовать этот атрибут, чем реализовывать всю команду с нуля.

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Мне удалось сделать то, что я задумал, следующим образом:

Я создал свою собственную команду помощи, которая расширяется (наследуется) от 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)
1 голос
/ 16 июня 2020

Вы можете создать новый экземпляр команды справки по умолчанию:

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)

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...