ForcePilot/backend/package/yuxi/channel/extensions/flock/fetch.py
Kris 0bad70ec19 feat(flock): 新增Flock团队协作IM渠道插件
实现了完整的Flock渠道接入能力,包含消息收发、Webhook事件监听、账号配置、安全校验、媒体文件处理等功能,支持私聊和群组聊天,适配ForcePilot插件规范。
2026-05-21 10:47:01 +08:00

46 lines
1.3 KiB
Python

from __future__ import annotations
import logging
from .config import _apply_env_overrides, _dict_to_account
from .constants import ENDPOINT_FETCH_MESSAGES
from .utils import create_http_client, flock_api_call
logger = logging.getLogger(__name__)
async def fetch_messages(
target_id: str,
*,
count: int = 10,
before: str | None = None,
account_id: str = "default",
config: dict,
) -> list[dict]:
account_data = config.get("accounts", {}).get(account_id, {})
account = _dict_to_account(account_data)
account = _apply_env_overrides(account)
if not account.bot_token:
logger.warning("Flock fetch_messages: bot_token not configured for account %s", account_id)
return []
payload: dict = {
"to": target_id,
"count": count,
}
if before:
payload["before"] = before
client = create_http_client()
try:
result = await flock_api_call(client, ENDPOINT_FETCH_MESSAGES, account.bot_token, payload)
messages = result.get("messages", [])
logger.info("Flock fetched %d messages for %s", len(messages), target_id)
return messages
except Exception as e:
logger.error("Flock fetch_messages failed for %s: %s", target_id, e)
return []
finally:
await client.aclose()