fix(qq): disable botpy file log to fix read-only filesystem error
When nanobot is run as a systemd service with ProtectSystem=strict, the process cwd defaults to the read-only root filesystem (/). botpy's default Client configuration includes a TimedRotatingFileHandler that writes 'botpy.log' to os.getcwd(), which raises [Errno 30] Read-only file system. Pass ext_handlers=False when constructing the botpy Client subclass to suppress the file handler. nanobot already routes all log output through loguru, so botpy's file handler is redundant. Fixes #1343 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -31,7 +31,13 @@ def _make_bot_class(channel: "QQChannel") -> "type[botpy.Client]":
|
||||
|
||||
class _Bot(botpy.Client):
|
||||
def __init__(self):
|
||||
super().__init__(intents=intents)
|
||||
# Disable botpy's default file handler (TimedRotatingFileHandler).
|
||||
# By default botpy writes "botpy.log" to the process cwd, which
|
||||
# fails under systemd with ProtectSystem=strict (read-only root fs).
|
||||
# nanobot already handles logging via loguru, so the file handler is
|
||||
# redundant. ext_handlers=False keeps console output but suppresses
|
||||
# the file log. See: https://github.com/HKUDS/nanobot/issues/1343
|
||||
super().__init__(intents=intents, ext_handlers=False)
|
||||
|
||||
async def on_ready(self):
|
||||
logger.info("QQ bot ready: {}", self.robot.name)
|
||||
|
||||
Reference in New Issue
Block a user