feat(telegram): load config from telegram.toml

This commit is contained in:
banteg
2025-12-28 20:37:54 +04:00
parent 0a984e228a
commit 6338c9f635
8 changed files with 187 additions and 34 deletions
+31 -7
View File
@@ -9,7 +9,14 @@ import time
from queue import Queue, Empty
from typing import Any, Dict, List, Optional, Tuple
from bridge_common import TelegramClient, RouteStore, parse_allowed_chat_ids
from bridge_common import (
TelegramClient,
RouteStore,
config_get,
load_telegram_config,
parse_allowed_chat_ids,
parse_chat_id_list,
)
MCP_PROTOCOL_VERSION = "2025-06-18"
@@ -244,18 +251,35 @@ class MCPStdioClient:
def main() -> None:
token = os.environ.get("TELEGRAM_BOT_TOKEN", "")
db_path = os.environ.get("BRIDGE_DB", "./bridge_routes.sqlite3")
config = load_telegram_config()
token = os.environ.get("TELEGRAM_BOT_TOKEN") or config_get(config, "bot_token") or ""
db_path = os.environ.get("BRIDGE_DB") or config_get(config, "bridge_db") or "./bridge_routes.sqlite3"
allowed = parse_allowed_chat_ids(os.environ.get("ALLOWED_CHAT_IDS", ""))
if allowed is None:
allowed = parse_chat_id_list(config_get(config, "allowed_chat_ids"))
# How to start Codex MCP server:
# default: "codex mcp-server" (can also be "npx -y codex mcp-server")
mcp_cmd = shlex.split(os.environ.get("CODEX_MCP_CMD", "codex mcp-server"))
raw_mcp_cmd = os.environ.get("CODEX_MCP_CMD")
if raw_mcp_cmd is None:
raw_mcp_cmd = config_get(config, "codex_mcp_cmd") or "codex mcp-server"
if isinstance(raw_mcp_cmd, list):
mcp_cmd = [str(v) for v in raw_mcp_cmd]
else:
mcp_cmd = shlex.split(str(raw_mcp_cmd))
# Optional defaults for tool args (you can override as you like)
default_cwd = os.environ.get("CODEX_WORKSPACE") # used as tool 'cwd'
default_sandbox = os.environ.get("CODEX_SANDBOX", "workspace-write")
default_approval = os.environ.get("CODEX_APPROVAL_POLICY", "never")
default_cwd = os.environ.get("CODEX_WORKSPACE") or config_get(config, "codex_workspace")
default_sandbox = (
os.environ.get("CODEX_SANDBOX")
or config_get(config, "codex_sandbox")
or "workspace-write"
)
default_approval = (
os.environ.get("CODEX_APPROVAL_POLICY")
or config_get(config, "codex_approval_policy")
or "never"
)
bot = TelegramClient(token)
store = RouteStore(db_path)