Как создать несколько команд discord с одинаковым именем в discord.py ?

#python #discord.py

#python #discord.py

Вопрос:

Как мне добавить несколько команд с одинаковым именем в Discord.py ? Например:

 @client.command(aliases=["dices"])
async def dice(ctx, num):
  try:
    num=int(num)
    bla bla bla
  except ValueError:
    await ctx.send("Invalid Number!")

@client.command(name='dice',aliases=["dices"])
async def dice_no_param(ctx):
  try:
      roll = random.randint(1,6)
      bla bla bla
  except ValueError:
    await ctx.send("Invalid Number!")
 

Но, очевидно, я получаю сообщение об ошибке.

 Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import bot
  File "/home/runner/HamburgerBot/bot.py", line 147, in <module>
    async def dice_no_param(ctx):
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 1163, in decorator
    self.add_command(result)
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 1071, in add_command
    raise discord.ClientException('Command {0.name} is already registered.'.format(command))
discord.errors.ClientException: Command dice is already registered.
 

Ответ №1:

Вы не можете, но для вашей dice командной цели вы можете сделать это так

 @client.command(name='dice', aliases=['dices'])
async def dice(ctx, num=None):
    num = num or random.randint(1, 6)
    try:
        num = int(num)
    except ValueError:
        return await ctx.send("Invalid Number!")
    # bla bla bla other code
 

Ответ №2:

В первой строке введите имя функции, с помощью которой вы использовали команду. Он должен должен писать так-

 @client.command(name='Name_of_the_function', aliases=['what_command_you_also_want_to_use'])
 

Вы можете использовать несколько подобных команд.