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