Как я могу сделать несколько команд справки, таких как help <fun>, help <music>и т. Д. - PullRequest
0 голосов
/ 18 января 2019

Итак, у меня есть команда help, и я также сделал команду help_fun.

То, что я пытаюсь сделать, это то, что когда человек говорит d-help, бот должен показывать вывод команды help, но когда человек говорит d-help fun, он должен показывать вывод команды help_fun.

Когда человек говорит d-help fun, он все равно показывает help вместо

import discord
from discord.ext import commands
client = commands.Bot(command_prefix='d-')
client.remove_command('help')
@client.event
async def on_ready():
    print('Ready')

@client.command(pass_context=True,aliases=['HELP','Help','Dartex help','hp','hlp'])
async def help():
    embed = discord.Embed(
        title = '? Thanks for using my bot',url="http://wq.lt/UwBrZ",
        description = "➺ This bot is currently in beta. More commands will be added soon.",
        colour = 0x0af78a
    )

    embed.set_author(name='Help',icon_url='https://cdn2.iconfinder.com/data/icons/app-types-in-grey/512/info_512pxGREY.png')
    embed.set_footer(text="Say d-help fun | admin | server | music, for the commands")
    embed.set_image(url='')
    embed.set_thumbnail(url='https://i.imgur.com/9Y04G7u.png')
    #embed.add_field(name= "-Music", value='d-play <YT link>\nd-stop\nd-pause\nd-resume', inline=False)
    #embed.add_field(name= "-Fun", value='d-say <text>\nd-type <text>\nd-tts <text>\nd-timer <Number>\nd-embed <text>\nd-embed2 <text>\nembed3 <text>\nd-joke\nd-invite\nd-8ball\nd-flip <word>\nd-color <hex>\nd-ping\nd-dice\nd-fancytext <text>\nd-shorten <link>\nd-unshorten\nd-uni <:emoji:>\nd-define <word>\nd-chatters', inline=False)
    #embed.add_field(name= "-Admin", value="d-ban\nd-banned\nd-clear <Number>\nd-kick <@user>\nd-create_dgc", inline=True)
    #embed.add_field(name= "-Server", value="d-serverinfo\nd-serverlist\nd-roles\nd-emotes\nd-userinfo <@user>", inline=True)
    embed.add_field(name= "Music", value="4 Music commands", inline=True)
    embed.add_field(name= "Server", value="5 Server commands", inline=True)
    embed.add_field(name= "Admin", value="5 Admin commands", inline=True)
    embed.add_field(name= "Fun", value="20 Fun commands", inline=True)
    await client.say(embed=embed)
@client.command(pass_context=True,aliases=['help fun','Help Fun','Help fun'])
async def help_fun():
    embed = discord.Embed(
        title =None,#'? Thanks for using my bot',url="http://wq.lt/UwBrZ",
        description = "➺ This bot is currently in beta. More commands will be added soon.",
        colour = 0x0af78a
    )

    embed.set_author(name='Fun commands',icon_url='https://i.imgur.com/9Y04G7u.png')
    embed.set_footer(text="Bot still in beta and more commands are being added")
    embed.set_image(url='')
    #embed.set_thumbnail(url='https://i.imgur.com/9Y04G7u.png')
    embed.add_field(name= "═─────────────────═", value='d-say <text>\nd-type <text>\nd-tts <text>\nd-timer <Number>\nd-embed <text>\nd-embed2 <text>\nembed3 <text>\nd-joke\nd-invite\nd-8ball\nd-flip <word>\nd-color <hex>\nd-ping\nd-dice\nd-fancytext <text>\nd-shorten <link>\nd-unshorten\nd-uni <:emoji:>\nd-define <word>\nd-chatters', inline=False)
    await client.say(embed=embed)

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вы можете использовать Group для организации команд в подкоманды

bot = Bot('.')

bot.remove_command('help')

@bot.group(invoke_without_command=True)  # Change this to false to always run main command
async def help():
    pass

@help.command()
async def music():
    await bot.say("Music is music")

@help.command()
async def fun():
    await bot.say("Fun is strictly prohibited")

Затем вы можете вызвать .help fun и т. Д.

0 голосов
/ 18 января 2019

Удалите @client.command() из обеих команд справки и вызовите их как обычные асинхронные функции при обнаружении ключевых слов d-help или d-help fun.
Таким образом, вы можете неограниченно расширять свои справочные команды и иметь столько, сколько захотите

client.remove_command('help')
@client.event
async def on_message(message):
  if message.content.startswith("d-help fun"):
    await help_fun(message.channel)
  elif message.content.startswith("d-help"):
    await help(message.channel)


async def help(channel):
  embed = discord.Embed(
      title = '? Thanks for using my bot',url="http://wq.lt/UwBrZ",
      description = "➺ This bot is currently in beta. More commands will be added soon.",
      colour = 0x0af78a
  )

  embed.set_author(name='Help',icon_url='https://cdn2.iconfinder.com/data/icons/app-types-in-grey/512/info_512pxGREY.png')
  embed.set_footer(text="Say d-help fun | admin | server | music, for the commands")
  embed.set_image(url='')
  embed.set_thumbnail(url='https://i.imgur.com/9Y04G7u.png')

  embed.add_field(name= "Music", value="4 Music commands", inline=True)
  embed.add_field(name= "Server", value="5 Server commands", inline=True)
  embed.add_field(name= "Admin", value="5 Admin commands", inline=True)
  embed.add_field(name= "Fun", value="20 Fun commands", inline=True)
  await client.send_message(channel,embed=embed)

async def help_fun(channel):
  embed = discord.Embed(
      title =None,#'? Thanks for using my bot',url="http://wq.lt/UwBrZ",
      description = "➺ This bot is currently in beta. More commands will be added soon.",
      colour = 0x0af78a
  )

  embed.set_author(name='Fun commands',icon_url='https://i.imgur.com/9Y04G7u.png')
  embed.set_footer(text="Bot still in beta and more commands are being added")
  embed.set_image(url='')
  embed.add_field(name= "═─────────────────═", value='d-say <text>\nd-type <text>\nd-tts <text>\nd-timer <Number>\nd-embed <text>\nd-embed2 <text>\nembed3 <text>\nd-joke\nd-invite\nd-8ball\nd-flip <word>\nd-color <hex>\nd-ping\nd-dice\nd-fancytext <text>\nd-shorten <link>\nd-unshorten\nd-uni <:emoji:>\nd-define <word>\nd-chatters', inline=False)
  await client.send_message(channel,embed=embed)
...