fix irc
This commit is contained in:
@@ -85,7 +85,7 @@ class TwitchIRCClient:
|
||||
|
||||
decoded = line.decode('utf-8', errors='ignore').strip()
|
||||
|
||||
# PING - отвечаем СРАЗУ
|
||||
# PING от Twitch — отвечаем СРАЗУ, возвращаем None чтобы не путать с нашим PONG
|
||||
if decoded.startswith('PING'):
|
||||
pong_msg = f"PONG {decoded.split()[1]}"
|
||||
self._writer.write(f"{pong_msg}\r\n".encode())
|
||||
@@ -94,7 +94,7 @@ class TwitchIRCClient:
|
||||
except (ConnectionResetError, BrokenPipeError, OSError) as e:
|
||||
logger.warning(f"Failed to send PONG: {e}")
|
||||
logger.debug(f"🏓 {pong_msg}")
|
||||
return f"PONG {decoded.split()[1]}" # Возвращаем PONG для отслеживания
|
||||
return None # не пробрасываем в основной цикл
|
||||
|
||||
return decoded
|
||||
|
||||
@@ -177,8 +177,8 @@ class TwitchIRCClient:
|
||||
start_time = datetime.now()
|
||||
last_message_time = datetime.now()
|
||||
last_ping_time = datetime.now()
|
||||
ping_interval = 20 # пинговать каждые 20 сек
|
||||
pong_timeout = 10 # ждать PONG 10 сек, иначе реконнект
|
||||
ping_interval = 120 # пинговать каждые 2 минуты
|
||||
pong_timeout = 30 # ждать PONG 30 сек, иначе реконнект
|
||||
waiting_pong = False
|
||||
ping_sent_at: Optional[float] = None
|
||||
drain_errors = 0
|
||||
@@ -272,9 +272,10 @@ class TwitchIRCClient:
|
||||
await asyncio.sleep(0.5)
|
||||
continue
|
||||
|
||||
if line.startswith('PONG'):
|
||||
# Twitch отвечает: ":tmi.twitch.tv PONG tmi.twitch.tv :..." — не startswith
|
||||
if 'PONG' in line:
|
||||
last_message_time = datetime.now()
|
||||
waiting_pong = False # подтверждение что соединение живо
|
||||
waiting_pong = False
|
||||
continue
|
||||
|
||||
msg = self._parse_message(line)
|
||||
|
||||
Reference in New Issue
Block a user