2020년 8월 3일 월요일

[매크로] 오토핫키를 이용해 텔레그램 봇으로 메시지 보내기

오토핫키를 이용해 알림을 보낼 수 있지 않을까 고민하게 되었습니다.

모니터링 하고 있지 않아도 특정 조건을 만족하면 확인할 수 있도록요.

일단 텔레그램 봇을 만들어봅시다.


1. 텔레그램 봇

 
텔레그램 봇을 만드는 이유는 텔레그램 봇 API를 이용해 내게 문자를 보내기 위해서 입니다. 카카오톡 봇도 가능하다고는 하는데 공식적이지는 않아 텔레그램 봇을 이용하였습니다.

텔레그램 봇은 휴대폰이나 컴퓨터에서 만들 수 있습니다. 만들기 위해 botfather와 채팅을 해야합니다.(이 놈도 봇입니다.) 핸드폰에서는 대화창의 오른쪽 위의 펜노트 버튼을 누르고 botfather를 검색해야합니다.


컴퓨터에서는 Microsoft store에서 telegram을 설치한 뒤 로그인을 하고 botfather를 검색하면 됩니다.




컴퓨터 텔레그램으로 설명하겠습니다. 시작을 눌러주세요.



botfather와 관련된 명령어들 설명이 나옵니다. /newbot을 입력합니다.



그러면 botfather가 bot의 이름을 적으라고 합니다. 저는 newbot_20200818로 입력했습니다.


botfather은 bot 이름에 Bot이나 _bot을 추가로 입력하라고 합니다. 저는
newbot_20200818_bot으로 간단하게 입력했습니다.


마침내 봇이 만들어졌습니다. 빨간색 칸에 있는 t.me/newbot_20200818_bot을 누르면 내가 만들어진 봇의 채팅창으로 들어가집니다. 보라색 칸에 있는 숫자와 영어는 API를 이용할 수 있는 token입니다.





2. 오토핫키


사실 오토핫키로 텔레그램 봇을 이용하는 코드는 잘 찾지 못했습니다. 다행히 한 외국인 분이 구현해 놓은 것을 찾았습니다. 원리는 이렇습니다. 텔레그램 봇은 결국 텔레그램 API를 이용하는 것이기 때문에 API를 이용하는 json 파일을 다운받으면서 실행시키는 원리였습니다. (이해하는데 시간이 좀 걸렸습니다.) 

이제 오토핫키 코드를 이용하기 위해 위에서 얻은 Token과 ChatID가 필요합니다. ChatID은 봇과의 채팅을 시작한 뒤 https://api.telegram.org/bot얻은Token/getUpdates을 인터넷 창에 입력하면 아래와 같이 ChatID을 얻을 수 있습니다. "chat": {"id": 다음에 있는 빨간색 부분이 ChatID입니다.


오토핫키 코드는 아래와 같습니다.

Telegram_MsgBox(Text)
{
	TelegramBotToken := 얻은Token
	TelegramBotChatID := 얻은ChatID
	
	loop 3
	{
		UrlDownloadToFile https://api.telegram.org/bot%TelegramBotToken%/sendmessage?chat_id=%TelegramBotChatID%&text=%Text%, %A_ScriptDir%\check.rups
		sleep 1000
		ifexist %A_ScriptDir%\check.rups
		{
			break
		}
		if A_index = 3
		{
			MsgBox, 16,, something went wrong with sending
		}
	}
	filedelete %A_ScriptDir%\check.rups
}

Telegram_MsgBox("Event!!!")

Telegram_MsgBox 함수를 이해해야합니다. 함수안의 'UrlDownloadToFile'은 API json 파일을 다운받으면서 채팅을 보내게 됩니다. 오토핫키가 있는 폴더에 잠깐 저장했다가 'filedelete' 코드로 지우는 원리입니다. 안타깝게도 한글은 되지 않습니다. 이참에 영어를 쓰시면 됩니다. 작은 이모티콘 코드도 있는데 불필요한 것 같아 따로 적지 않겠습니다.

Telegram_MsgBox("Event!!!")는 함수 실행문 입니다.


3. 오토핫키 실행


실행해보면 다음과 같이 메세지가 오는 것을 확인할 수 있습니다. 이제는 굳이 계속 확인안해도 되겠죠?



※ 참고문헌
https://devlog.jwgo.kr/2018/03/09/telegram-bot-api-response-json/

0 개의 댓글:

댓글 쓰기