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

Python Discussion :

Appel d'un autre fichier


Sujet :

Python

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2009
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2009
    Messages : 75
    Par d�faut Appel d'un autre fichier
    Bonjour � tous,

    Un coll�gue et moi, nous nous sommes lanc� un d�fi afin de cr�er un petit bot Discord pour notre team.
    Petite pr�cision, nous d�butons juste dans la programmation avec Python.
    Celui-ci fonctionne parfaitement mais le code est tout stock� dans un m�me fichier.
    Je souhaiterais pouvoir le scinder, pour pouvoir y travailler plus confortablement dessus, si nous venons � rajouter des fonctionnalit�s dans le futur.
    Avec l'aide de diff�rents tutos, j'arrive � appeler une fonction "print" simple, mais je n'arrive pas � appeler la commande "clear"....

    Pourriez-vous me venir en aide et m'indiquer ce que j'ai mal fait dans le code?
    Je pense que j'ai du me m�langer les pinceaux

    Je vous mets en copie le code 2 fichiers.

    Le fichier bot.py :
    Code : 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
    import re
    import datetime
    import os.path
    import discord
    import asyncio
    from discord.ext import commands
    from discord.utils import get
    from discord.ext.commands import Bot
     
    TOKEN = ''
    client = commands.Bot(command_prefix = '.')
     
    extensions =['clear']
     
    @client.event
    async def on_ready():
        print('Bot Online')
     
    if __name__ == '__main__':
        for extension in extensions:
            try:
                client.load_extension(extension)
            except Exception as error:
                print('{} cannot be loaded. [{}]'.format(extension, error))
     
    client.run(TOKEN)
    Le fichier clear.py :
    Code : 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
    import discord
    from discord.ext import commands
     
    client = commands.Bot(command_prefix = '.')
     
    class Clear:
        def __init__(self, client):
            self.client = client
     
        @commands.command(pass_context=True)       
        async def clear(ctx, number):
            user_roles = [r.name.lower() for r in ctx.message.author.roles]
            if "modos" not in user_roles:
                return await client.say(":no_entry: "+ctx.message.author.mention+", tu n'as pas le droit d'exécuter cette commande... :no_entry:")
            pass
            mgs = []
            number = int(number) + 1
            numbervrai = number - 1
            async for x in client.logs_from(ctx.message.channel, limit = number):
                mgs.append(x)
            await client.delete_messages(mgs)
            await client.say(":recycle: "+str(numbervrai)+" Message(s) supprimé(s) par "+ctx.message.author.mention+" :recycle:")
     
    def setup(client):
        client.add_cog(Clear(client))
    Avec Visual Studio Code, j'ai async et ctx de surlign� en rouge dans le fichier clear.py

    Cordialement.

  2. #2
    Expert confirm�
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 095
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 095
    Par d�faut
    Bonjour,

    Avec Visual Studio Code, j'ai async et ctx de surlign� en rouge dans le fichier clear.py
    Quelle version de python as-tu ? asyncio existe que depuis la version 3.5...

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2009
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2009
    Messages : 75
    Par d�faut
    Bonjour,

    Quelle version de python as-tu ? asyncio existe que depuis la version 3.5...
    J'utilise la version 3.6.8 sur windows, car la derni�re version poserait des soucis d'apr�s ce que j'ai pu lire.
    Dans Visual Studio Code, j'ai install� l'extension Python 2019.1.0

    J'ai ajout� asyncio, car �a ne fonctionnait pas sans non plus

  4. #4
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : Architecte technique retrait�
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 770
    Par d�faut
    Salut,

    Citation Envoy� par elsabio Voir le message
    Avec Visual Studio Code, j'ai async et ctx de surlign� en rouge dans le fichier clear.py
    Soit �� fonctionne et Visual Studio ne reconna�t ces instructions l�, soit �� plante et vous avez un message d'erreur � poster.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2009
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2009
    Messages : 75
    Par d�faut
    vous avez un message d'erreur � poster.
    Dans le terminal, j'ai ces messages:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    AttributeError: 'Clear' object has no attribute 'message'
     
    The above exception was the direct cause of the following exception:
     
    Traceback (most recent call last):
      File "C:\Users\elsabio\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\bot.py", line 846, in process_commands
        yield from command.invoke(ctx)
      File "C:\Users\elsabio\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 374, in invoke
        yield from injected(*ctx.args, **ctx.kwargs)
      File "C:\Users\elsabio\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 54, in wrapped
        raise CommandInvokeError(e) from e
    discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Clear' object has no attribute 'message'
    et ces probl�mes du fait que async et ctx soient soulign�:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    Method should have "self" as first argument [ligne 11, 5]
    Instance of 'Clear' has no 'message' member [ligne 12, 47]
    Instance of 'Clear' has no 'message' member [ligne 14, 51]
    Instance of 'Clear' has no 'message' member [ligne 19, 41]
    Instance of 'Clear' has no 'message' member [ligne 22, 87]
    De plus, j'ai du mal � comprendre l'appel de fonction sous python.

  6. #6
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : Architecte technique retrait�
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 770
    Par d�faut
    Salut,

    Je dirais que si vous voulez utiliser une biblioth�que comme discord, des messages d'erreurs comme AttributeError: 'Clear' object has no attribute 'message' doivent vous �tre suffisamment familiers pour que vous sachiez quoi faire: ajouter l'attribut "message" en essayant de comprendre c�t� discord ce qu'il vient faire et d'o� il vient (peut �tre que "Clear" doit �tre s/classe de... et �� c'est pas Python qui vous le dira).

    Citation Envoy� par elsabio Voir le message
    De plus, j'ai du mal � comprendre l'appel de fonction sous python.
    Alors, il faut commencer par le d�but alors et piocher dans la page des tutos un cours adapt� � votre niveau et � vos besoins.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2009
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2009
    Messages : 75
    Par d�faut
    il faut commencer par le d�but alors et piocher dans la page des tutos
    C'est ce que j'ai fait, mais je n'ai pas trouv� d'exemple ressemblant � mon cas.
    Peut �tre ai-je mal cherch�.

  8. #8
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : Architecte technique retrait�
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 770
    Par d�faut
    Citation Envoy� par elsabio Voir le message
    C'est ce que j'ai fait, mais je n'ai pas trouv� d'exemple ressemblant � mon cas.
    Peut �tre ai-je mal cherch�.
    Programmer c'est pas chercher un code � recopier, c'est comprendre comment l'�crire.... et s'acclimater avec les messages d'erreurs divers et vari�s que l'on rencontre en faisant les exercices.
    Si vous n'avez pas fait ��, vous ne savez m�me pas ou chercher en cas de probl�me... et vous en �tes r�duit � recopier du code sans trop comprendre.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2009
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2009
    Messages : 75
    Par d�faut
    Je suis enti�rement d'accord, mais tout le monde ne fonctionne pas comme vous le dites. N'ayant qu'un besoin �pisodique, regarder comment des exemples sont �crit, permet aussi d'en comprendre une partie, je vous l'accorde pas la majorit� du fonctionnement.

  10. #10
    Membre chevronn�
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 26
    Localisation : France, Sa�ne et Loire (Bourgogne)

    Informations professionnelles :
    Activit� : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par d�faut
    Bonjour,

    J'utilise moi m�me discord.py et en premier lieu il faut savoir si tu utilise bien la version rewrite (visiblement oui tu utilise discord.commands)

    quelques conseils :
    - renomme ton instance de commands.Bot en bot (et non client)
    - n'utilise pas pass argument
    - utilise les check (@commands.has_role() au lieu de ta list comprehension
    - v�rifie que l'utilisateur fait bien la commande sur une guilde et non en DM (@commands.guild_only())
    - utilise les converters avec les annotations de type.

    Tu utilise un m�lange de rewrite et de async (la branche async de la lib est d�pr�ci� et non maintenue), et bien sur les 2 ne sont pas compatibles.

    voici un exemple de code pour la version rewrite
    Code : 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
    30
    31
    32
    33
    import discord
    from discord.ext import commands
     
     
     
    class Clear:
    	"""
            Cogs pour clean des messages.
            """
    	def __init__(self, bot):
    		self.bot = bot
     
     
    	def __unload(self):
    		pass
     
     
    	async def on_ready(self):
    		pass
     
     
            @commands.command()
            @commands.guild_only()
            @commands.has_role("modos")
    	async def clean(self, ctx, number : int = 5):
    		"""
                    Permet de supprimer x messages (5 par défaut).
                    """
    		deleted_msg = await ctx.purge(limit=number+1)  # + 1 car le message de commande sera compté dans les messages supprimés.
    		await ctx.send(f"{len(deleted_msg)} messages supprimés.")
     
    def setup(bot):
    	bot.add_cog(Clear(bot))
    ps : si tu ne maitrise pas python tu va te manger salement avec discord.py

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2009
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2009
    Messages : 75
    Par d�faut
    Je vais regarder ce que tu as propos�

    si tu ne maitrise pas python tu va te manger salement avec discord.py
    C'est bien le cas, je ne pensais pas que scinder en plusieurs fichier serait si fastidieux, mais je vais pers�v�rer.
    J'aime aller au bout des choses.

    Il faut que j'arrive � comprendre le m�canisme.....

Discussions similaires

  1. Appel macro depuis autre fichier => ne s'accomplit pas
    Par dedam dans le forum Macros et VBA Excel
    R�ponses: 4
    Dernier message: 05/04/2016, 21h30
  2. [XL-2010] Appel d'un autre fichier
    Par Compte temporaire dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 19/12/2015, 08h39
  3. [JAVA] Appeller fonction qui est dans un autre fichier
    Par Aspic dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 15/05/2007, 21h12
  4. appel d'une variable d'un autre fichier
    Par jmbonnaz dans le forum MATLAB
    R�ponses: 1
    Dernier message: 18/04/2007, 11h08

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