Die Grundidee ist, in der Lage zu sein, einen Zwietracht-Bot ** zu erstellen, der automatisch Splatoons Kampfaufzeichnung auf ** stat.ink hochlädt, unabhängig davon, ob Sie ein PC-Anfänger oder jemand sind, der nur ein Smartphone hat.
** Für diejenigen, die einen Discord-Bot erstellen oder verwenden möchten, der Kampfergebnisse vorerst kostenlos auf stat.ink veröffentlicht, lesen Sie bitte GitHub Repository, wie Sie ihn vorbereiten und verwenden können. Ich habe es ausführlich in READ ME von geschrieben, also bitte dort nachsehen. ** ** **
In diesem Artikel werde ich über einige Ideen zu Discord Bot sprechen, der auf Heroku läuft.
splatnet2stat.py
auf stat.ink hoch.
--Nach dem Starten von Discord Bot ** Sie können iksm_session (Vorbereitung für den automatischen Upload) nur mit der Bot-Funktion erhalten **Heroku hat Einschränkungen beim Erstellen und Schreiben von Dateien.
/ tmp
erstellen, um temporäre Dateien zu erstellen. (* Die Originaldatei befindet sich unter / app
.)/ tmp
in regelmäßigen Abständen (bis zu 24 Stunden) zurückgesetzt.Damit sind zwei Probleme verbunden.
Nach dem Start von Discord Bot ** Sie können iksm_session (Vorbereitung für den automatischen Upload) nur mit der Bot-Funktion erhalten **
Aufgrund der Spezifikationen der obigen Funktion wird iksm_session (genau genommen der Inhalt von config.txt) nach dem Ausführen von bot mit heroku erhalten. Um diese Daten für immer zu speichern, habe ich diesmal die Umgebungsvariablen von Heroku verwendet.
Heroku-Umgebungsvariablen können über den Heroku-Verwaltungsbildschirm festgelegt, aber auch über die REST-API von Heroku aktualisiert werden. Mit anderen Worten, es ist möglich, Umgebungsvariablen aus dem auf Heroku laufenden Bot heraus auszugeben und die Daten kontinuierlich zu speichern **. -> Weitere Informationen Plattform-API-Referenz # config-vars-update
app_name=os.getenv("HEROKU_APP_NAME", "app-splat") #HEROKU_APP_NAME
if app_name=="":
print("Umgebungsvariable HEROKU_APP_NAME ist nicht definiert.")
return
patch_url = f"https://api.heroku.com/apps/{app_name}/config-vars"
headers= {"Authorization": f"Bearer {os.getenv('HEROKU_APIKEY')}",
"Content-Type":"application/json",
"Accept":"application/vnd.heroku+json; version=3"}
res=requests.patch(patch_url, headers=headers, json=new_envs)
Dyno wird nach dem Aktualisieren der Umgebungsvariablen einmal neu gestartet. Beachten Sie außerdem, dass ** Heroku-Umgebungsvariablen nur bis zu insgesamt 32 KB ** verwendet werden können.
splatnet2statink.py
setzt voraus, dass sich config.txt mit iksm_session usw. im selben Verzeichnis befindet.
Schreiben Sie "config_path" neu.
Unter der Annahme eines lokalen Experiments wird die Umgebungsvariable abhängig vom Vorhandensein oder Fehlen von "os.getenv (" DYNO ")", das in Heroku standardmäßig festgelegt ist, ordnungsgemäß verwendet.
splatnet2statink
## splatnet2statink/iksm.py
config_path="/tmp/config.txt" if os.getenv("DYNO", False) else f"{os.path.dirname(__file__)}/../tmp/config.txt"
## splatnet2statink/splatnet2statink.py
config_path=iksm.config_path
Weitere Probleme sind:
Ich habe das in einem anderen Artikel geschrieben. -> Problem mit Python json.loads (), das str in Heroku zurückgibt Da es sich möglicherweise nicht um eine Zeichenfolge handelt, versuchen wir derzeit, den Typ zu bestimmen.
Heroku
loaded_tmp=json.loads(dumped_string)
loaded_dict=eval(loaded_tmp) if (loaded_tmp)==str else loaded_tmp
GitHub Repository
Recommended Posts