2017-11-21 6 views
0

Ich habe mit der Funktion discord.py send_file() herumspielen.In Bezug auf Discord.py send_file()

habe ich originially diese Antwort auf die Frage ein grundlegendes Verständnis der Parameter zu bekommen ich brauchen würde: How do I use client.send_file discord.py

aber ich mit meinem bot in der auf ein paar Servern, nicht nur eine, und die Antwort gegeben habe vor, Die oben verlinkte Frage codiert im Wesentlichen einen bestimmten Kanal, an den Dateien gesendet werden sollen.

Was ich versuche, ist, dass mein Bot die ID des Kanals bekommt, in dem der Befehl! Moe angegeben ist, und eine Datei an denselben Kanal senden.

@client.command() 
async def moe(): 

    await client.send_file(client.get_server('How do I get the ID of the discord channel that calls this command?')),'moe.gif') 

Antwort

0

Angenommen, Sie sind mit dem rewrite Zweig (die iirc, sollten Sie sein), es so einfach wie ein ctx Parameter auf Ihren Befehl der Funktion nehmen und accessing ctx.channel (beachten Sie, dass die docs Beispiel, was zu widersprechen scheint es sagt davor, aber in Wirklichkeit ist es nur Kurzschrift). Wenn Sie nicht mit dem rewrite Zweig sind, glaube ich, soll es so ziemlich der gleiche Prozess sein, aber Ihr Dekorateur wie diese stattdessen aussehen sollte:

@client.command(pass_context=True) 
+0

Ich versuchte ctx.channel Aufruf und lief in einen Fehler. Ich habe meine discord.py-Dateien von hier heruntergeladen: https://github.com/Rapptz/discord.py Ist das nicht der richtige Download? – sg1simmons

+0

Sie sollten nicht wirklich den Download-Button auf GitHub verwenden. Sie sollten 'pip' verwenden, das bei jeder Python-Installation standardmäßig enthalten sein sollte. – Bytewave

+0

Wenn Sie gerade den 'async'-Zweig heruntergeladen haben, sind Sie wahrscheinlich nicht auf' rewrite'. Unabhängig davon haben Sie keinen 'ctx'-Parameter hinzugefügt. Fügen Sie das zuerst zu Ihrer Funktionsdefinition hinzu und versuchen Sie es mit 'ctx.channel'. Wenn das nicht funktioniert, müssen Sie eventuell mit 'ctx.message.channel' ausgehen. – Bytewave