Napisałem swój pierwszy "poważniejszy" kod w pythonie pod bota z Discorda pod serwery gier Source i Goldensource. Po dodaniu IP serwera do listy, serwer ten jest odpytywany co jakiś czas czy serwer ma jakiś graczy i wydaje odpowiedni komunikat na czacie.
Niby mała rzecz, a przydatna w przypadku martwego multiplayera...
Wystarczy podać w enviromentsach token do bota, id kanału i role, które mają być wołane i odpalić skrypt na swoim hoście.
Jeszcze bede refactorował, póki co chciałem by jakkolwiek działało
https://codeberg.org/xelot/dm_server/src/branch/main/player_activity_bot.py
https://codeberg.org/xelot/dm_server/src/branch/main/.env
#programowanie #gry #python
Niby mała rzecz, a przydatna w przypadku martwego multiplayera...
Wystarczy podać w enviromentsach token do bota, id kanału i role, które mają być wołane i odpalić skrypt na swoim hoście.
Jeszcze bede refactorował, póki co chciałem by jakkolwiek działało
https://codeberg.org/xelot/dm_server/src/branch/main/player_activity_bot.py
https://codeberg.org/xelot/dm_server/src/branch/main/.env
#programowanie #gry #python
Świetna robota Tomeczku!
W kwestii refactoru - całość wygląda nawet git, jedyne co to bym ten fragment bym zmienił, żeby wychodzić z pętli elegancko i ograniczyć liczbę powtórzeń jak request nie działa.
Tutaj cały wątek na SO jak to najlepiej obsłużyć - https://stackoverflow.com/questions/2083987/how-to-retry-after-exception
retries = 3
while retries:
try:<br />
players_list = await a2s.aplayers(address)<br />
retries = 0<br />
except a2s.BufferExhaustedError:<br />
print("BufferExhaustedError: retrying in 30 secs")<br />
retries -= 1<br />
await asyncio.sleep(30)<br />
except TimeoutError():<br />
print("TimeoutError: retrying in 1 minute")<br />
retries -= 1<br />
await asyncio.sleep(60)
Zaloguj się aby komentować