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
ade239a7-0e25-4324-95b2-1f76a586ed84
Hepar

Ś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ć