Skip to content

feat: Telegram과 Discord 동시 활성 또는 send endpoint 독립 동작 지원 #199

@122yjs

Description

@122yjs

요약

현재 cli-jawtelegram.enabled=truediscord.enabled=true를 동시에 설정할 수 있지만, 실제 런타임에서 활성화되는 remote transport는 settings.json의 단일 값인 channel 하나만 따릅니다.

이 때문에 Telegram 설정이 정상이고 Bot API 직접 전송도 성공하는데도, channel=discord 상태에서는 로컬 엔드포인트 POST /api/telegram/sendTelegram not connected를 반환합니다.

재현 환경

  • cli-jaw: 2.0.5
  • 설정 상태 예시:
{
  "channel": "discord",
  "telegram": {
    "enabled": true,
    "allowedChatIds": [222022825]
  },
  "discord": {
    "enabled": true
  }
}

실제 동작

  1. Telegram token과 allowedChatIds가 설정되어 있음
  2. Telegram Bot API getMe, getChat, sendMessage는 성공함
  3. 하지만 cli-jaw 로컬 엔드포인트는 실패함
POST http://localhost:3457/api/telegram/send

응답:

{
  "error": "Telegram not connected"
}

원인은 channel=discord일 때 Telegram transport가 초기화되지 않아 telegramBot이 null 상태로 남기 때문으로 보입니다.

기대 동작 / 개선 제안

선택지는 몇 가지가 있을 것 같습니다.

1. 다중 active remote channel 지원

예:

{
  "channels": ["telegram", "discord"]
}

이 경우 Telegram과 Discord transport가 모두 초기화되고, 둘 다 입력/출력 채널로 사용할 수 있습니다.

2. active input channel은 하나로 유지하되 send endpoint는 독립 동작

현재 설계가 “one active remote runtime at a time”이라면, 입력 채널은 하나만 유지하더라도 명시적 send endpoint는 설정된 transport를 사용할 수 있으면 좋겠습니다.

예:

  • channel=discord → Discord가 기본 대화 채널
  • telegram.enabled=true/api/telegram/send는 알림/파일 전달용으로 사용 가능

이 방식이면 heartbeat, report delivery, backup notification처럼 “대화 채널과 알림 채널이 다른” 사용례를 지원할 수 있습니다.

3. 최소 개선: doctor/status에서 명확히 경고

현재는 설정만 보면 Telegram이 켜져 있는 것처럼 보이지만, 실제로는 inactive transport입니다. 그래서 doctorstatus에서 아래처럼 알려주면 좋겠습니다.

Telegram is configured but inactive because channel=discord.
/api/telegram/send will return Telegram not connected until channel=telegram or multi-channel runtime is supported.

관련 기존 이슈

두 이슈 모두 “one active remote runtime at a time”을 전제로 하고 있어서, 이 요청은 버그라기보다는 follow-up enhancement에 가깝다고 생각합니다.

사용 사례

  • Discord를 기본 대화 채널로 쓰면서 Telegram으로 알림만 받고 싶음
  • Telegram을 백업 채널이나 파일 전달 채널로 유지하고 싶음
  • heartbeat/report 결과를 Telegram으로 보내되, 평소 대화는 Discord에서 하고 싶음
  • 설정상 telegram.enabled=true인데 /api/telegram/send가 실패하는 혼란을 줄이고 싶음

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions