From 63542d32e3726c5657cac69d8ee2a3c5101fec7f Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Fri, 6 Mar 2026 22:14:20 +0700 Subject: [PATCH] bot: fix duplicate unregister KeyError and improve connection error logging Silently ignore KeyError when unregistering an already-removed FD from the poll loop (servers can queue multiple close events). Also include the exception message when a server connection fails at startup. Co-Authored-By: Claude Sonnet 4.6 --- nemubot/__main__.py | 4 ++-- nemubot/bot.py | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/nemubot/__main__.py b/nemubot/__main__.py index 6a8b265..7070639 100644 --- a/nemubot/__main__.py +++ b/nemubot/__main__.py @@ -163,8 +163,8 @@ def main(): logger.info("Server '%s' successfully added.", srv.name) else: logger.error("Can't add server '%s'.", srv.name) - except: - logger.error("Unable to connect to '%s'.", srv.name) + except Exception as e: + logger.error("Unable to connect to '%s': %s", srv.name, e) continue break diff --git a/nemubot/bot.py b/nemubot/bot.py index 6aa5ed6..21f7178 100644 --- a/nemubot/bot.py +++ b/nemubot/bot.py @@ -218,7 +218,10 @@ class Bot(threading.Thread): elif args[0] == "register": self._poll.register(int(args[1]), select.POLLIN | select.POLLPRI) elif args[0] == "unregister": - self._poll.unregister(int(args[1])) + try: + self._poll.unregister(int(args[1])) + except KeyError: + pass except: logger.exception("Unhandled excpetion during action:")