취업/PHP

텔레그램 봇 오류 409해결방법. stopPolling

카슈밀 2021. 5. 12. 18:01
반응형

{"code":"ETELEGRAM","message":"ETELEGRAM: 409 Conflict: terminated by other getUpdates request; make sure that only one bot instance"}

 

409지만 실제로 컨플릭트가 여러군데서 발생하니 문구를 잘 보도록 하자.

Conflict: terminated by other getUpdates request; make sure that only one bot instance

기존에 있던 봇 코드를 서버를 올렸는데, 왜인지 이러한 오류가 계속 발생한다.

 

아마도 polling부분때문에 발생하는 오류 같은데, 이를 해결하기위해 방법을 찾아봤으나 없었다.

 

쉽게 찾은 방법이 있긴한데, process.exit()로 실제 돌아가는 회사 서버를 끌수도 있어서 쓸수가 없었다.

 

어떻게 해야하나 했는데, 그냥 api에서 설명서로 있더라.

잘 안보여서 헤맸던 문제.

 

  const TelegramBot = require('node-telegram-bot-api');
  const channelId = '챗방id';
  let token = '마! 토큰이다! 마!';
  const bot = new TelegramBot(token, {polling: true});
  async function send_telbot(message) {
    bot.sendMessage(channelId, message)
    .then(() => {
      bot.stopPolling();  <-api문서에는 전역이라해서 속았다.
      console.log('꺼졌다!');
    })
    .catch((e)=> {
      console.log('텔레그램 봇 오류 : '+ e);
    })
  };

  send_telbot('꺼졌니?');

공식문서를 보면 telegrambot.polling()이렇게 적혀있고 global(전역)으로 적혀있어,

TelegramBot.stopPolling()했으나 오류를 내뿜더라.

그래서 이리저리해보다 bot에서 시작했으니 bot을꺼야겠다 싶어 bot.stopPolling하니꺼짐...

 

 

하.... 일단 해결한것 같은데, 계속 써보고 문제점 있는지 찾아봐야지

 

npm 문서랑 github 문서가 좀 다르더라;;; option부분이 기재되고 아니고 차이가 있던...

stopPolling부분을 보면 이해가 된다.

github.com/yagop/node-telegram-bot-api/blob/release/doc/api.md

 

yagop/node-telegram-bot-api

Telegram Bot API for NodeJS. Contribute to yagop/node-telegram-bot-api development by creating an account on GitHub.

github.com

www.npmjs.com/package/node-telegram-bot-api/v/0.25.0?activeTab=readme#TelegramBot+stopPolling

 

node-telegram-bot-api

Telegram Bot API

www.npmjs.com

 

 

++ 5/21 추가

해당 부분 해결이 안되었습니다. 아마도 polling때문에 그런 듯 싶은데, 이를 한번만 확인하게 하는 것을 써야 하는 것 같습니다. 아니면 아예 꺼버리거나요

 

++ 9/10 추가

그냥 polling 옵션을 제거했습니다.

그러면 작동 되는 것 같습니다. 주기적으로 봐야할 것 같아요

728x90