AttributeError: 'Select' object has no attribute 'user'

Résolu
artemis-037 Messages postés 50 Date d'inscription samedi 16 avril 2022 Statut Membre Dernière intervention 30 août 2024 - 30 août 2024 à 17:04
artemis-037 Messages postés 50 Date d'inscription samedi 16 avril 2022 Statut Membre Dernière intervention 30 août 2024 - 30 août 2024 à 18:52

bonjour, 

j'ai besoin d'aide sur une erreur dans mon bot discord 

voici la partie du code en question c'est pour faire des ticket et il me donne l'erreur ci - dessou 

et je ne comprend pas pourquoi ca me parle de select dans l'erreur j'espére que vous pourrez m'aidez  merci d'avance pour ceux qui prendrons le temps de m'aidez 

@bot.command(name='ticket_menu')
async def menu(ctx):
    info_dict = {}
    try:
        with open('configuration.conf', 'r') as f:
            for line in f:
                key, value = line.strip().split(':')
                info_dict[key.strip()] = value.strip()
    except FileNotFoundError:
        await ctx.send("Le fichier de configuration est manquant.")
        return
    except Exception as e:
        await ctx.send(f"Erreur de lecture du fichier de configuration: {e}")
        return

    if ctx.author.name in info_dict.get("membre", "") or any(role.name in info_dict.get("role", "").split() for role in ctx.author.roles):
        await ctx.message.delete()

        options = [
            discord.SelectOption(label='Besoin d\'aide', description='Pour toute question ou problème, n\'hesiter pas à ouvrir un ticket', value='1', emoji='????'),
            discord.SelectOption(label='Légal', description='Pour toute question ou problème concernant le légal', value='2', emoji='⚖️'),
            discord.SelectOption(label='Illégal', description='Pour toute question ou problème concernant l\'illégal', value='3', emoji='????'),
            discord.SelectOption(label='boutique', description='Pour toute question, problème ou Achat', value='4', emoji='????️'),
        ]

        class SelectMenu(discord.ui.View):
            @discord.ui.select(placeholder="Choisissez une option...", min_values=1, max_values=1, options=options)
            async def select_callback(self, select: discord.ui.Select, interaction: discord.Interaction):
                # Accéder à l'utilisateur via l'objet interaction
                membre_name = interaction.user.name
                
                # Répondre à l'interaction en fonction de la valeur sélectionnée
                if select.values[0] == '1':
                    ticket = "aide"
                    await help_ticket(membre=membre_name)
                elif select.values[0] == '2':
                    ticket = "légal"
                    await légal_ticket(membre=membre_name)
                elif select.values[0] == '3':
                    ticket = "illégal"
                    await illégal_ticket(membre=membre_name)
                elif select.values[0] == '4':
                    ticket = "boutique"
                    await boutique_ticket(membre=membre_name)
                
                # Envoyer un message dans le canal de tickets
                channel = bot.get_channel(1279046122522017843)
                create_ticket = discord.Embed(title=membre_name, description=f"action : created \n raison: {ticket}", color=0x00FF00)
                await channel.send(embed=create_ticket)
                
                # Répondre à l'utilisateur pour indiquer que le ticket a été créé
                await interaction.response.send_message("Votre ticket a été créé.", ephemeral=True)

        embed = discord.Embed(title="Besoin d'aide", description="Besoin D'aide ? Ouvre un ticket selon ta demande et tu aura une réponse sous peu. Réagie selon ton besoin", color=0x3C0FF)
        await ctx.send(embed=embed, view=SelectMenu())
    else:
        await ctx.message.delete()
        msg = "**Vous n'avez pas la permission d'utiliser cette commande.**"
        embed = discord.Embed(description=msg, color=0x3C0FF)
        await ctx.channel.send(embed=embed)
2024-08-30 16:59:03 ERROR    discord.ui.view Ignoring exception in view <SelectMenu timeout=180.0 children=1> for item <Select placeholder='Choisissez une option...' min_values=1 max_values=1 disabled=False options=[<SelectOption label="Besoin d'aide" value='1' description="Pour toute question ou problème, n'hesiter pas à ouvrir un ticket" emoji=<PartialEmoji animated=False name='????' id=None> default=False>, <SelectOption label='Légal' value='2' description='Pour toute question ou problème concernant le légal' emoji=<PartialEmoji animated=False name='⚖️' id=None> default=False>, <SelectOption label='Illégal' value='3' description="Pour toute question oou problème concernant l'illégal" emoji=<PartialEmoji animated=False name='????' id=None> default=False>, <SelectOption label='boutique' value='4' description='Pour toute question, problème ou Achat' emoji=<PartialEmoji animated=False name='????️' id=None> default=False>]>
Traceback (most recent call last):
  File "c:\Users\gacha\AppData\Local\Programs\Python\Python312\Lib\site-packages\discord\ui\view.py", line 427, in _scheduled_task
    await item.callback(interaction)
  File "c:\Users\gacha\OneDrive\Documents\python\bot discord\bot sunland\bot_sunland.py", line 166, in select_callback
    membre_name = interaction.user.name
                  ^^^^^^^^^^^^^^^^
AttributeError: 'Select' object has no attribute 'user'

1 réponse

artemis-037 Messages postés 50 Date d'inscription samedi 16 avril 2022 Statut Membre Dernière intervention 30 août 2024 1
30 août 2024 à 18:52

re, en fait jai juste inverser interaction et select comme ci dessou et ca a marcher j'ai pas compris pourquoi mais voila pour ceux qui cherche.

async def select_callback(self, interaction: discord.ui.Select, select : discord.Interaction):

1