IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

discord helpCommand slash-commands [Python 3.X]


Sujet :

Réseau/Web Python

  1. #1
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut discord helpCommand slash-commands
    Bonjour à tous,

    je suis en train de développer un bot discord en python.
    j'ai un souci avec l'aide customisée et la gestion des slash-commands

    pour gérer les slash-commands j'utilise la lib "Bot.tree", mais il semblerait que dans l'implémentation de HelpCommand la méthode send_command_help soit basée par la classe mère sur "Bot.commands" et non sur tree
    du coup la classe mère ne trouve pas les commandes qui sont stockées dans "Bot.tree.get_commands()"

    existe-t-il une parade ?

    main.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    ...
    @bot.tree.command(name=MEETUP_COMMAND,description="my description")   
    async def mp(interaction: discord.Interaction):
        embed = discord.Embed(title="Meetup tool", description="disclaimer")   
        view = MyView()
        await interaction.response.send_message(embed=embed, view=view)
    class MyHelp(commands.HelpCommand) #interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    async def send_command_help(self, command):
            if command.name == MEETUP_COMMAND:
            # MEETUP_COMMAND n'est pas trouve car il est dans Bot.tree.get_commands et non Bot.commands
            ...
            ...
    pour info : discord 2.1.0 | discord.py 2.1.1 | python 3.11
    autant vous dire que j'ai épluché la toile avant d'en recourir à vos services

  2. #2
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut solution
    En fait je viens de trouver, la solution est "pas de solution"

    dans ce cas il ne faut pas utiliser la classe helpCommand
    mais plutôt supprimer la gestion de l'aide par le bot : bot.remove_command("help")
    et définir sa propre commande "help"

    Code PYTHON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    @bot.tree.command(description="botivity help")   
    async def help(interaction: discord.Interaction, command:str=None):
     
        if command is not None:
            for c in bot.tree.get_commands():
                if c.name == command:
                    command=c
                    break
                else:
                    continue
            try:
                if(command.name == MEETUP_COMMAND):
                    txt=txt_mp
                else:
                    txt=command.description
                embed = discord.Embed(title=command.name,description=txt)
                await interaction.response.send_message(embed=embed)
            except AttributeError: #command not found
                e = discord.Embed(title="Error:",description=f"Command {command} not found", color=0xFF0000)
                await interaction.response.send_message(embed=e)
            return
     
     
        names = [command.name for command in bot.tree.get_commands()] 
        available_commands = "\n".join(names)
        embed = discord.Embed(title=f"Commands ({len(names)}):",description=available_commands)
        embed.set_footer(text=f"  /help <command> (e.g /help {random.choice(names)})")
        await interaction.response.send_message(embed=embed)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2022, 23h02
  2. Interception des commandes in et out
    Par KDD dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 18/12/2002, 16h55
  3. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  4. Réponses: 3
    Dernier message: 02/09/2002, 18h49
  5. Réponses: 2
    Dernier message: 11/08/2002, 21h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo