본문 바로가기

컴퓨터/기타

Project 1.0 telegram 봇 제작하기.(2)

반응형

전체적인 명령어를 지원하는 봇을 만들기 전에 간단한 봇을 만들도록 하자. 여기서 사용하는 언어는 Lua script로 게임에서 많이 쓰인다고 한다.

telegram에서 lua script를 적용시키는 방법은 간단하다. 터미널 상에서 "<telegram-cli의 경로> -s <lua script의 파일 위치>" 이런 식의 문법을 이용하면 된다.


이 스크립트는 누군가로부터 hello라는 메시지를 전달받으면 world라는 메시지를 답장으로 보내주는 봇의 스크립트이다.

function on_msg_receive(msg)
	if(msg.text=="hello") then
		mark_read(msg.from.print_name, ok_cb, false)
		send_msg(msg.from.print_name, "world", ok_cb, false)
	end
end

function ok_cb(extra, succes, result)
end

여기서 mark_read의 경우에는 받은 메시지를 읽었다고 표시해주는 함수이고, send_msg의 경우에는 메시지를 보내는 함수이다. 이렇게 작성한 내용을 bot.lua라고 저장을 한다.(편의상 저장위치를 처음 (1)에서 압축을 풀었던 폴더로 생각한다.)

그리고 터미널 창에서

bin/telegram-cli -s bot.lua

라고 입력을 하면 세팅이 끝난 것이다. 이제 시험삼아서 봇에게 hello라는 메시지를 전달해보자. 그러면 hello라는 메시지를 수신할 때마다 메시지를 읽었다고 표시가 되고 또한 world라는 메시지를 받을 수 있다.


그런데 만약 봇에게 Hello라고 메시지를 보내면 아무런 반응이 없게 된다.

즉, 여기서 좀 더 추가를 한다면 입력받은 문자의 대소문자를 구분하지 않도록 하는 편이 접근성 측면에서 좋기 때문에(대부분의 휴대폰이 처음 영어를 치면 대문자로 나오기 때문) 이 기능을 추가해주도록 하자. lua script에서 전부 소문자로 바꾸어주는 함수가 string.lower()이므로 이를 이용해서 위의 스크립트를 수정할 수 있다.

function on_msg_receive(msg)
	if(string.lower(msg.text)=="hello") then
		mark_read(msg.from.print_name, ok_cb, false)
		send_msg(msg.from.print_name, "world", ok_cb, false)
	end
end

function ok_cb(extra, succes, result)
end

이 스크립트도 위에서 한 방식대로 스크립트를 실행한 후에 봇에게 메시지를 보내 결과를 확인해보자.

반응형