[PYTHON] Speichern Sie die angegebene Kanal-ID im Text und laden Sie sie beim nächsten Start

Start

Als ich nach langer Zeit anfing, einen Bot mit Discord zu erstellen, habe ich falsch verstanden, dass ich keine Nachricht senden kann, wenn ich nicht die Kanal-ID erhalten und angegeben habe. ~~ Versehentliches Produkt (obwohl beabsichtigt) ~~

Was ist das?

Überprüfen Sie zuerst das Vorhandensein der Datei Wenn ja, speichern Sie die gelesene Kanal-ID in einer Variablen Wenn nicht, gehen Sie so durch, wie es ist / Kanal-ID einrichten Wenn die Kanal-ID korrekt ist, wird eine Erfolgsmeldung an den angegebenen Kanal gesendet. /save Speichern Sie die Kanal-ID in einer Textdatei mit

Wann benutzt du es?

Personen, die Kanäle angeben, damit sich der Bot nicht auf verschiedenen Kanälen bewegt, können beim Ändern des Kanals, der den Bot bewegt, hilfreich sein. ~~ Wenn es dich nicht interessiert, benutze message.channel ~~

Programm

Quellcode (gefaltet)
```python import discord

client = discord.Client()

@client.event async def on_ready(): print("logged in as "+client.user.name) try: with open("test.txt","r")as f: channel=client.get_channel(int(f.read())) await channel.send("Ich konnte die Kanal-ID laden") except FileNotFoundError: print("Kanal-ID konnte nicht abgerufen werden")

@client.event async def on_message(message): global tmp if message.author != client.user: if message.content.startswith("/setup")==True: tmp=message.content[7:len(message.content)] try: channel=client.get_channel(int(tmp)) except ValueError: print("Unzulässiger Wert") try: await channel.send("Erfolg") except AttributeError: print("Falsche Kanal-ID") except UnboundLocalError: print("Unzulässiger Typ") if message.content=="/save": f=open("test.txt","w") f.write(tmp) f.close() channel=client.get_channel(int(tmp)) await channel.send("Ich habe die Kanal-ID gespeichert") client.run("token")

</div></details>

## Kommentar
### Lade Datei
```python
    try:
        with open("test.txt","r")as f:
            channel=client.get_channel(int(f.read()))
            await channel.send("Ich konnte die Kanal-ID laden")
            load=1
    except FileNotFoundError:
        print("Kanal-ID konnte nicht abgerufen werden")

Wenn die Datei nicht vorhanden ist, versuchen Sie es mit Ausnahme, um den Fehler zu behandeln. Da es aus einer Textdatei gelesen wird, ist es natürlich auch erforderlich, von einer Zeichenfolge in einen numerischen Wert zu konvertieren, sodass auch int () verwendet wird.

Kanal-ID abrufen

        if message.content.startswith("/setup")==True:
            tmp=message.content[7:len(message.content)]
            try:
                channel=client.get_channel(int(tmp))
            except ValueError:
                print("Unzulässiger Wert")
            try:
                await channel.send("Erfolg")
            except AttributeError:
                print("Falsche Kanal-ID")
            except UnboundLocalError:
                print("Unzulässiger Typ")

/ Kanal-ID einrichten Extrahieren Sie nur den Kanal-ID-Teil mit `client.get_channel (int (tmp))` Speichern Sie die Kanal-ID im Kanal ~~ Ich weiß nicht, wie ich mit dem Fehler umgehen soll, aber ich habe ihn in ~~ eingefügt

Kanal-ID speichern

        if message.content=="/save":
            f=open("test.txt","w")
            f.write(tmp)
            f.close()
            channel=client.get_channel(int(tmp))
            await channel.send("Ich habe die Kanal-ID gespeichert")

~~ `` open (" Datei speichern "," Typ ") `Ich erinnere mich richtig daran, aber wenn ich mich an w des Schreibens und r des Lesens erinnere, wird es irgendwie () ~~ sein Es sollte nicht schwierig sein, da es hauptsächlich um das Schreiben und Lesen von Dateien geht.

Zusammenfassung

** Lerne die Grundlagen **

Recommended Posts