2017-09-16 1 views
0

J'ai donc des problèmes avec mon Discord Bot en Python. Le code pour cela est devenu tout simplement trop pour avoir une bonne vue d'ensemble, je voulais donc le diviser en différents fichiers source.Discord Python Bot avec différents fichiers source

(Main-fichier)

...   
import second_file 
if message.content.lower().startswith("!Hi"): 
    second_file.hello() 

(deuxième fichier)

... 
from __main__ import client 
def hello(): 
    await client.send_message(message.channel, "Hiii <3!") 

L'erreur que je reçois est name "client" is not defined.

Que dois-je faire? Merci :)

+0

Si ma réponse a fonctionné, veuillez la marquer comme correcte afin que n'importe qui dans le futur puisse résoudre son problème. – James

+0

Vous devriez vraiment regarder dans la création de Cogs. L'utilisation de Cogs rendra votre vie tellement plus facile. EDIT: Vous auriez aussi besoin de regarder dans commands.ext – xNinjaKittyx

Répondre

0

Essayez de remplacer from __main__ import client avec from main import client en supposant que votre principal fichier python est appelé main.py.

Vous devez faire cela car python ne veut que le nom du fichier lors de l'importation d'un autre script. Je vous recommande également de changer votre nom de fichier principal en quelque chose d'autre car __main__ en python est réservé pour d'autres choses.

+0

Malheureusement, cela ne l'a pas réparé ... Maintenant, il suffit de dire: "syntaxe invalide" à client.send_message (message.channel, "Hiii <3!") " Et le pointeur est par le" t "du client – itzFlubby

+0

Il a été nommé" __ principal __ "parce que j'ai entendu que Python utilise" __ main __ "pour le script appelant – itzFlubby

+0

Renommez le fichier en quelque chose d'autre et essayez de le faire à nouveau – James

1

J'ai eu le même problème. Le problème est que vous utilisez await en dehors d'une fonction async. Je ne connais pas la vraie raison pour laquelle cela jette l'erreur. Vous n'avez pas non plus besoin d'importer client de __main__. Vous pouvez utiliser

await __main__.client.send_message(__main__.message.channel, 'Hello')` 

très bien. Mais essayez ce code:

(Main-file) 
import second_file 
if message.content.lower().startswith('!hi'): 
    second_file.hello() 

(Second-file) 

async def hello(): 
    await __main__.client.send_message(__main__.message.channel, 'Hello!') 

Désolé si j'ai des erreurs de grammaire ou d'orthographe. L'anglais n'est pas ma langue maternelle (unfortunataly D:) Espérons que cela vous aide aussi