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) ~~
Ü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
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 ~~
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.
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
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.
Recommended Posts