Как исправить бот discord.js-commando, отвечающий на неизвестные команды - PullRequest
0 голосов
/ 23 февраля 2019

Я создаю клиента со свойством unknownCommandResponse, установленным на false:

const client = new CommandoClient({
  commandPrefix: '$',
  unknownCommandResponse: false,
  owner: '291048060845424640',
  disableEveryone: true
});

Тем не менее, когда я пытаюсь $kasopdkoakwdokapowkdo, он отвечает:

Unknown command. Use $help or @Mysticonomy#2670 help to view the command list.

1 Ответ

0 голосов
/ 23 февраля 2019

Это был правильный способ сделать это до 18 января: они решили сделать бот «неизвестными командами» и «ошибками», ответы на них можно переопределять, разрешив вместо этого запускать пользовательские команды.
Это изменение может небыть еще хорошо документированным, но был перенесен в ветку master с этим коммитом Gawdl3y .Эта тема взята из этой проблемы , а также указана в столбце «Готово» проекта «Важные вещи» [ ссылка ].

Если вы хотитечтобы он работал как в прошлом, вам нужно использовать предыдущую версию;вы не сможете обновить библиотеку для добавления новых функций без обновления этой части кода.

С этим обновлением вы можете создать новую команду, расширив класс Command (как обычно)и затем добавление двух свойств, установленных в true: unknown и hidden.
Если вы хотите пример, вы можете посмотреть прямо на значение по умолчанию unknown-command автором изменения:

module.exports = class UnknownCommandCommand extends Command {
  constructor(client) {
    super(client, {
      name: 'unknown-command',
      group: 'util',
      memberName: 'unknown-command',
      description: 'Displays help information for when an unknown command is used.',
      examples: ['unknown-command kickeverybodyever'],
      unknown: true,
      hidden: true
    });
  }

  run(msg) {
    return msg.reply(
      `Unknown command. Use ${msg.anyUsage(
                'help',
                msg.guild ? undefined : null,
                msg.guild ? undefined : null
            )} to view the command list.`
    );
  }
};

Не забудьте не загружать значение по умолчанию unknown-command: оно будет загружено по умолчанию CommandoRegistry.registerDefaultCommands(), если вы явно не скажете ему не делать этого.
Чтобы избежать этого, добавьте unknownCommand: false к параметрам при загрузке этих команд.

client.registry.registerDefaultCommands({
  unknownCommand: false
});
...