ForcePilot/backend/package/yuxi/channels/adapters/telegram/accounts/token.py
Kris 71fec609bb feat(telegram-adapter): 实现完整的Telegram适配器基础代码
新增了Telegram适配器的全套基础模块,包括:
1.  核心适配器入口与会话工具
2.  账号管理、认证与配置系统
3.  连接相关的轮询、Webhook、更新偏移管理
4.  话题路由、管理与缓存系统
5.  消息反抖动、超时配置与工具类
6.  响应式UI与命令交互系统
7.  反应表情与通知系统
8.  审批与安全审计模块
9.  健康检查与状态监控
10. 贴纸缓存与视觉工具
11. 流式响应与协作功能
12. 群组迁移与目标归一化处理
2026-05-12 00:49:52 +08:00

49 lines
1.4 KiB
Python

from __future__ import annotations
import os
from typing import Any
def resolve_bot_token(config: dict[str, Any], account_id: str = "default") -> str | None:
accounts = config.get("accounts", {})
account_cfg = accounts.get(account_id, {})
token = account_cfg.get("bot_token")
if token:
return token
token = config.get("bot_token")
if token:
return token
token_file = account_cfg.get("token_file") or config.get("token_file")
if token_file and os.path.isfile(token_file):
with open(token_file) as f:
return f.read().strip()
env_token = os.getenv("TELEGRAM_BOT_TOKEN")
if env_token:
return env_token
env_prefix = os.getenv("TELEGRAM_BOT_TOKEN_PREFIX", "")
env_suffix = account_id.upper()
env_key = f"{env_prefix}_{env_suffix}" if env_prefix else f"TELEGRAM_BOT_TOKEN_{env_suffix}"
env_token = os.getenv(env_key)
if env_token:
return env_token
return None
def resolve_token_source(config: dict[str, Any], account_id: str = "default") -> str:
accounts = config.get("accounts", {})
account_cfg = accounts.get(account_id, {})
if account_cfg.get("bot_token"):
return f"accounts.{account_id}.bot_token"
if config.get("bot_token"):
return "config.bot_token"
if account_cfg.get("token_file") or config.get("token_file"):
return "token_file"
return "env.TELEGRAM_BOT_TOKEN"