Partage
  • Partager sur Facebook
  • Partager sur Twitter

Résolution problème Bot pour Discord

    3 juin 2024 à 22:49:03

    Bonsoir à tous,

    N'ayant aucune connaissance du code (que ce soit Python, Javascript ou autre), j'ai fait appel à ChatGPT pour créer un BOT afin de l'intégrer sur un serveur Discord dont je suis administrateur. 

    Le souci étant que certaines erreurs reviennent très souvent, à savoir : SyntaxError: 'await' outside function (j'ai réglé les soucis jusqu'à la ligne 35).

    Si certains connaisseurs peuvent m'expliquer comment régler ces erreurs, je suis preneuse :

    import discord
    from discord.ext import commands
    from discord.ui import Button, View
    import pandas as pd
    
    file_path = 'C:\\Users\\Utilisateur\\Documents\\Best 10 Pokemon.xlsx'
    if not os.path.isfile(file_path):
     print(f"Le fichier {file_path} n'existe pas.")
    df = pd.read_excel(file_path, sheet_name='Feuil1')
    pokemon_dict = {}
    
    types_pokemon = df['Type'].unique()
    for pokemon_type in types_pokemon: pass
    filtered_df = df[df['Type'] == pokemon_type].reset_index(drop=True)
    pokemon_dict[pokemon_type] = filtered_df
    
    intents = discord.Intents.default()
    intents.message_content = True 
    
    bot = commands.Bot(command_prefix='/', intents=intents)
    
    class PokemonView(View):pass
    def __init__(self, pokemon_type):pass
    super().__init__(timeout=None)
    self.pokemon_type = pokemon_type
    
    @discord.ui.button(label='Voir les Pokémon', style=discord.ButtonStyle.primary)
    async def show_pokemons(self, interaction: discord.Interaction, button: Button):pass
    pokemons = pokemon_dict[self.pokemon_type]
    embed = discord.Embed(title=f'Top 10 {self.pokemon_type} Pokémon')
    for index, row in pokemons.iterrows():pass
    embed.add_field(name=f"#{row['Numéro classement']} - {row['Pokémon']}",
    value=f"Attaque immédiate: {row['Attaque immédiate']}\nAttaque chargée: {row['Attaque chargée']}",
    inline=False)
    await interaction.response.send_message(f'Voici le top 10 des type {pokemon_type}', view=view)
    
    @bot.event
    async def on_ready():pass
    print(f'We have logged in as {bot.user}')
    
    @bot.command()
    async def pokemons(ctx):print("Received pokemons command")
    check()
    view = View()
    for pokemon_type in pokemon_dict.keys():pass
    button = Button(label=pokemon_type, style=discord.ButtonStyle.secondary)
    button.callback = lambda interaction, pt=pokemon_type: show_pokemon_type(interaction, pt)
    view.add_item(button)
    await ctx.send('Sélectionnez un type de Pokémon:', view=view)
    
    async def show_pokemon_type(interaction, pokemon_type):pass
    view = PokemonView(pokemon_type)
    await interaction.response.send_message('Voici le top 10 des type {pokemon_type}', view=view)

    Merci à tous !

    Bonne soirée :)

    • Partager sur Facebook
    • Partager sur Twitter
      4 juin 2024 à 9:59:50

      Bonjour,

      déjà, ce qui est bizarre, c'est qu'il n'y a aucune indentation dans ton code

      et chat gpt raconte parfois des betises :-)

      • Partager sur Facebook
      • Partager sur Twitter
        4 juin 2024 à 10:38:59

        Bonjour, 

        Merci pour votre commentaire. Je pensais qu'à cause des erreurs d'indentation il fallait justement supprimer les doubles espaces inutiles.

        Le code initial est le suivant :

        import discord
        from discord.ext import commands
        from discord.ui import Button, View
        import pandas as pd
        
        file_path = 'C:\\Users\\Utilisateur\\Documents\\Best 10 Pokemon.xlsx'
        print(df['Type'].unique())
        df = pd.read_excel(file_path, sheet_name='Feuil1')
        
        pokemon_dict = {}
        
        types_pokemon = df['Type'].unique()
        for pokemon_type in types_pokemon: pass
        filtered_df = df[df['Type'] == pokemon_type].reset_index(drop=True)
        pokemon_dict[pokemon_type] = filtered_df
        
        intents = discord.Intents.default()
        intents.message_content = True 
        
        bot = commands.Bot(command_prefix='!', intents=intents)
        
        class PokemonView(View):
            def __init__(self, pokemon_type):
                super().__init__(timeout=None)
                self.pokemon_type = pokemon_type
        
            @discord.ui.button(label='Voir les Pokémon', style=discord.ButtonStyle.primary)
            async def show_pokemons(self, interaction: discord.Interaction, button: Button):
                pokemons = pokemon_dict[self.pokemon_type]
                embed = discord.Embed(title=f'Top 10 {self.pokemon_type} Pokémon')
                for index, row in pokemons.iterrows():
                    embed.add_field(name=f"#{row['Numéro classement']} - {row['Pokémon']}",
                                    value=f"Attaque immédiate: {row['Attaque immédiate']}\nAttaque chargée: {row['Attaque chargée']}",
                                    inline=False)
                await interaction.response.send_message(embed=embed)
        
        @bot.event
        async def on_ready():
            print(f'We have logged in as {bot.user}')
        
        @bot.command()
        async def pokemons(ctx):
            view = View()
            for pokemon_type in pokemon_dict.keys():
                button = Button(label=pokemon_type, style=discord.ButtonStyle.secondary)
                button.callback = lambda interaction, pt=pokemon_type: show_pokemon_type(interaction, pt)
                view.add_item(button)
            await ctx.send('Sélectionnez un type de Pokémon:', view=view)
        
        async def show_pokemon_type(interaction, pokemon_type):
            view = PokemonView(pokemon_type)
            await interaction.response.send_message(f'Vous avez sélectionné {pokemon_type}', view=view)
        
        bot.run('TOKEN DE MON DISCORD')

        Voyez-vous des anomalies quelque part ?

        Merci & bonne journée

        -
        Edité par MarieLH44 4 juin 2024 à 10:39:57

        • Partager sur Facebook
        • Partager sur Twitter

        Résolution problème Bot pour Discord

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown