Telegram Bot2017. 6. 25. 18:28

지금까지 Telegram Bot을 만들고 Twitter API 설정 및 tweepy 설치까지 했다.

이번에는 python 코드를 작성하여 Tweet_Bot이 동작하도록 하자.


tweet_Test.py 라는 이름으로 파일을 생성했고, python 코드는 다음과 같다.



위 코드를 설명하겠다.

웹에 접근하기 위해 urllib, urllib2 라이브러리를 사용하며, 디렉터리와 파일의 유무 및 생성을 위해 os 라이브러리를 사용한다. 그리고 twitter API를 쉽게 사용하기 위해 wrapper 모듈인 tweepy 라이브러리를 사용한다. 마지막으로 60초마다 동작하도록 하기 위해 time 라이브러리를 사용한다.


API키, API Secret 키, Access 키, Access Secret 키 들을 선언한다.

send_telegram() 함수를 정의하며 이 함수는 BOT_ID( 봇 고유 번호 )를 이용해 해당 봇에 CHAT_ID( 채팅방 고유번호 )를 가진 채팅방에 인자로 전달받은 sendData를 보내는 함수이다.

즉, Tweet_Bot이 사용자에게 데이터를 보내주는 역할을 한다.


main 함수부분은 다음과 같다.

먼저 현재 디렉터리에 "latest" 라는 이름의 디렉터리가 있는지 판별하고, 없으면 "latest" 디렉터리를 생성한다.

API_KEY, API_SECRET 을 이용해 사용자 검증을 하고, ACCESS_KEY, ACCESS_SECRET 을 이용해 검증된 사용자에게 access_token을 셋팅한다.

UserID는 숫자로 되어 있는데 이 숫자는 여기에서 확인할 수 있다. '@'로 시작하는 사용자 명을 '@'를 떼고 적어주면 된다. 

필자는 @CoinKor 계정의 트윗을 받아오기 위해 CoinKor를 검색하여 나온 ID를 사용하였다.


name은 파일을 생성할 때 사용하는 변수로 필자는 CoinKorea의 데이터를 가져오므로 CoinKorea로 설정했다. 


무한 루프를 돌면서 특정 사용자의 타임라인을 읽어와 timeline 변수에 저장한다.

타임라인의 가장 최신의 글을 text 변수에 저장한 뒤 latest 디렉터리 안에 "CoinKorea_latest.txt" 파일이 있는지 판단하고 없으면 isNotEqual 변수를 True로 설정해 파일을 생성하여 최신글을 저장한다.

"CoinKorea_latest.txt" 파일이 존재하면 파일을 읽어 before 변수에 저장하고 text 변수와 비교하여 다르면 isNotEqual을 True로 설정한다.

즉, 가장 최신의 글이 올라오게 되면 해당 글을 텔레그램으로 보내주는 역할을 한다.


위 루틴을 60초 마다 반복하도록 sleep() 함수를 이용한다.


[ 그림 1 ] tweet_Test.py를 실행한 후 Tweet_Bot 채팅방


이렇게 Tweet_Bot을 만들어봤다.

위 봇을 응용해서 다른 봇도 만들어볼 수 있을 것 같다.

Posted by Imp3rio