• 목록
  • 아래로
  • 위로

안녕하세요?


humit 님이나 네모 님 같은 고수님께서 보시기에는 


마치 숀 화이트 앞에서 스노보드를 타거나 


걸그룹의 리드댄서 앞에서 춤을 추는 것처럼 매우 유치한 내용이겠지만 


제가 예전에 올린 스크립트를 보완하는 의미에서 글을 적어봅니다 ^^;;;



기억이 나실지는 모르겠지만 제가 파이썬 텔레그램 봇을 이용한 


간단한 새 글 알림 스크립트에 관해 글을 올린 적이 있었는데요.


제 개인적으로는 신간도서 등을 확인하기 위해 그럭저럭 잘 사용하고 있습니다.


https://studyforus.com/share/261210

안녕하세요? 파이썬(파이썬 텔레그램 봇 패키지 포함), 텔레그램, 그리고 크론탭을 이용해서 어느 게시판이...
Study For Us / 2017-11-19



위와 같은 스크립트에서 봇과의 채팅창에 장시간 아무런 대화가 없을 경우에


다음과 같은 IndexError가 발생합니다.


"IndexError: list index out of range"


크론탭에 걸어놓고 다음날 로그를 보면 위와 같은 에러를 확인할 수 있습니다.


물론 봇에게 아무 톡이나 하나 보내면 해결되지만 


그것도 은근히 귀찮고 채팅방의 다른 사람들이 새 글이 떴다고 오해할 수도 있죠 ㅠㅠ

(혼잣말 하는 것이 싫어서 에코봇을 넣은 적도 있습니다 -_-;;;)



구글링해보면 LAST_UPDATE_ID의 경우에는 다음과 같은 방식으로 해결할 수 있다고 하네요.


try:
LAST_UPDATE_ID = bot.getUpdates()[-1].update_id
except IndexError:
LAST_UPDATE_ID = 0



제가 작성한 스크립트를 기준으로 설명드리면 


chat_id = bot.getUpdates()[-1].message.chat.id


이 부분이 문제가 되는데요.


파이썬 2.7 환경에서 위와 같은 try except문을 이용한 chat_id = 0으로 해결되지 않더군요.


제가 구글링해봤지만 위 경우에 딱 들어맞는 레퍼런스를 찾지는 못했습니다. 



제 경험상 이러한 경우에 Chat ID를 직접 대입하면 위와 같은 에러가 발생하지 않는 것을 확인하였습니다.


Chat ID를 알아내는 방법은 여러가지가 있지만 


요즘에는 Chat ID 봇을 통해서 간단히 알 수 있습니다.


여러 봇이 활동하고 있지만 저는 @get_id_bot을 주로 사용합니다.


봇과의 대화창에서 /my_id 를 입력해주시면 봇 Chat ID를 알려줍니다. 


봇이 알려준 ID(숫자로 되어 있습니다)를 스크립트에 chat_id = 123456 이런 식으로 바로 대입하면 


위와 같은 IndexError 문제가 해결됩니다.



제가 정확한 레퍼런스를 찾지 못했고 


저도 파이썬에 대해 아주 기초적인 것조차 제대로 모르고 쓰는 글이기 때문에 


혹시라도 잘못된 부분이 있으면 지적 부탁드려요~ ^-^


그럼 좋은 주말 저녁 되세요!


항상 감사드립니다 :)


작성자
이니스프리 119 Lv. (0%) 1903750/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 2

네모
profile image
만약 해당봇을 1사람만 사용하신다면 index를 굳이 -1로 잡을 필요 없이, 0으로 설정해도 되지 않을까 싶네요.
어차피 1명 전용 봇인데 여러 채팅방이 생성될리가..!
comment menu
2018.03.25. 05:02

신고

"네모님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → 네모
profile image
허걱 ㅠㅠ 네모 님의 날카로운 지적 정말 감사드립니다!
제가 거기까지 미처 생각을 못했네요 ㅜㅜ
역시 네모 님 앞에서 파이썬을 논하는 것은
컬링 대표팀 앞에서 컬링을 논하는 것처럼 무지한 행동이네요 ^^
다른 사람들과 공유하지 않고 저 혼자 사용하는 봇의 경우에는 앞으로 말씀하신대로 사용하겠습니다!
그럼 네모 님께서도 좋은 주말 되세요~
다시 한 번 감사드려요 ^-^
comment menu
2018.03.25. 10:43

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 695
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4371
466 [Windows] 날짜 및 시각을 폴더명으로 하는 백업 Batch 파일 - 파일 버저닝 용도 2 이니스프리 이니스프리 21.01.25.22:14 918
465 [Python] json.load()와 json.loads()의 차이 2 이니스프리 이니스프리 21.01.24.13:15 495
464 [Python] 전기차 충전소 조회 사이트 크롤링 이니스프리 이니스프리 21.01.10.15:10 230
463 [React] React-Router BrowserRouter를 사용한 앱을 SFU 호스팅에 배포하는 방법 1 Ruwaku 20.12.18.15:41 313
462 로지텍 G304 , G403 마우스 카일저소음 스위치(버튼) 교체!! 2 image 자뻑보이 자뻑보이 20.12.02.20:23 1475
461 [Python] 두 개의 리스트를 한꺼번에 for문으로 돌리기 1 이니스프리 이니스프리 20.11.23.20:30 338
460 [Python] 리스트의 순서를 유지하되 중복되는 요소를 제거하기 이니스프리 이니스프리 20.11.15.14:54 180
459 [Python] 네이버 블로그 크롤링할 때 PostList.nhn 관련 팁 (문자열에서 첫번째 행을 제거하기) 이니스프리 이니스프리 20.11.08.18:16 202
458 [Python] 문자열에서 파일명 또는 폴더명으로 시스템상 지원되는 글자를 제외하고 삭제하기 이니스프리 이니스프리 20.11.01.14:37 104
457 [Python] Pytube를 이용하여 유튜브 영상을 간단히 다운받는 법에 대한 설명 이니스프리 이니스프리 20.11.01.14:25 473
456 [Python] 특정 단어가 들어가는 폴더 또는 파일을 옮기기 이니스프리 이니스프리 20.11.01.14:14 3922
455 [Python] 2개의 리스트를 딕셔너리로 변환하는 3가지 방법 이니스프리 이니스프리 20.10.25.15:34 1056
454 [Python] HWP 파일 읽기 6 이니스프리 이니스프리 20.10.18.12:19 2089
453 [Python] 디렉토리 내 0바이트 파일 찾기 이니스프리 이니스프리 20.10.11.11:19 216
452 [Python] 유튜브 영상을 PC에 다운받은 후 영상파일을 90도 rotation 하기 (youtube_dl + moviepy) 4 이니스프리 이니스프리 20.10.03.17:58 357
451 [Python] 폴더 및 하위 폴더 내의 파일에서 문자열을 일괄적으로 replace하는 스크립트 (ver 1.1) 이니스프리 이니스프리 20.10.02.11:58 251
450 [Amina] 그누보드 + 아미나 설치 방법 (처음 시작하는 분들을 위한 간단 매뉴얼) 이니스프리 이니스프리 20.10.01.16:48 269
449 JavaScript와 Canvas로 이미지의 배경값을 자동으로 산출하기 Seia Seia 20.09.12.06:37 287
448 React 그리고 Redux 쉽게 이해하기 image Seia Seia 20.09.12.06:31 104
447 [Python] 폴더의 모든 파일명을 랜덤하게 변경하기 이니스프리 이니스프리 20.08.30.15:06 1005