Telegram 409, 봇이 두 개인 줄 몰랐다

코인 훈수|2026. 4. 22. 23:31

오픈 클로봇이 며칠째 메시지를 안 받았다. 로그를 보니 이랬다.

Telegram API error: {'ok': False, 'error_code': 409,
'description': 'Conflict: terminated by other getUpdates request;
make sure that only one bot instance is running'}

 

Telegram이 "다른 getUpdates 요청에 의해 종료됨"이라고 한다. 봇 인스턴스가 하나 이상 실행 중이라는 뜻. 근데 나는 봇을 하나만 켜놨다고 생각했다.

 

원인

프로세스 목록을 뽑아봤다.

ps aux | grep python | grep -v grep

세 개가 나왔다.

  1. claw_bot.py — 원래 운영 중인 클로봇
  2. hunslog_bot.py (PID 98224) — LaunchAgent로 실행 중
  3. hunslog_bot.py (PID 95965) — 좀비 프로세스, 4월 9일부터 살아있었음

hunslog_bot은 블로그 자동화 봇이다. Telegram으로 명령을 받기 위해 getUpdates를 폴링한다. 그런데 Telegram 토큰을 claw_bot과 같은 걸 쓰고 있었다. 같은 토큰으로 세 개가 동시에 폴링하니까 Telegram이 매번 한 개만 살려두고 나머지를 409로 걷어차는 것. 이전에 openclaw-gateway를 제거해도 409가 안 풀린 이유가 이거였다. 진짜 범인은 hunslog_bot이었는데 openclaw만 보고 있었다.


수정

kill 95965          # 좀비 프로세스 제거
kill 98224          # hunslog_bot 종료
launchctl unload com.shud.hunslog.plist  # LaunchAgent 해제
launchctl stop com.shud.clawbot
launchctl start com.shud.clawbot         # claw_bot 단독으로 재시작

재시작 후 로그:

[2026-04-19] Bot: @shud_claw_bot (슈드 오픈클로봇)
[2026-04-19] Bot is ready! Waiting for messages...

409가 사라졌다.

 

교훈

같은 Telegram 봇 토큰은 하나의 getUpdates 연결만 허용한다.

봇을 여러 개 운영하면 각각 별도 토큰이 필요하다. @BotFather에서 /newbot으로 만들면 된다. hunslog_bot은 나중에 새 토큰 발급 후 재배포 예정. 지금은 꺼놓은 상태. 프로세스 목록은 가끔씩 확인할 것. 좀비가 조용히 살아서 다른 봇을 방해하고 있을 수 있다.

댓글()
개인정보처리방침