Hejto.pl
Motyw strony
Dodaj post

Wpis użytkownika mejwen w Programowanie

Fenomen

w Programowanie

8piorunów

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

Komentarze (1)

Kompan0piorunów

Ś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:
players_list = await a2s.aplayers(address)
retries = 0
except a2s.BufferExhaustedError:
print("BufferExhaustedError: retrying in 30 secs")
retries -= 1
await asyncio.sleep(30)
except TimeoutError():
print("TimeoutError: retrying in 1 minute")
retries -= 1
await asyncio.sleep(60)

How to retry after exception?I have a loop starting with for i in range(0, 100). Normally it runs correctly, but sometimes it fails due to network conditions. Currently I have it set so that on failure, it will continue in theStack Overflow