안녕하세요,
가끔 올라오는 텔레그램 봇을 보면서 쉽게 봇을 만드는 방법에 대해서 강좌를 해보고 싶었는데, 오늘 용기를 내서 짧게나마 이렇게도 봇을 만들 수 있다는 강좌를 해보려고 합니다.
다만, 봇을 만들고 호스팅까지 이어질 수 있도록 하기 위해 제가 직접 관여하고 있는 서비스를 이용할 계획이라(물론 무료로 이용 가능합니다.), 다른 게시판(?)으로 가야 할지는 강좌를 보시고 판단해 주셨으면 합니다.
오늘 첫 시작은 내 말을 따라하는 에코 봇 입니다.
아주 간단한 예제로, 어떤 과정을 거쳐 봇이 만들어지게 되는지 보여주기 위함입니다.
준비물은,
Python3, 텔레그램 봇 토큰, BotHub.Studio 계정 및 SDK
이렇게 크게 3가지입니다.
개발은 Python3 으로 진행하게 되며, 모든 텔레그램 봇은 제어하기 위한 액세스 토큰을 발급 받아야 합니다.
혹시 Python이 처음이시라면 설치와 간단한 사용에 대해서는 사전에 간단한 강좌를 참고하시길 권장합니다.
- Python3 설치는 완료되었다고 보겠습니다.
- 텔레그램 봇 토큰은 텔레그램에서 @BotFather 를 추가 후 진행하시면 됩니다.
http://telegra.ph/telegram-token-06-12 를 참조하시면 어렵지 않게 생성하실 수 있습니다.
-> 액세스 토큰을 기록해 두세요. 생성한 자신의 텔레그램 봇 Username도요! - https://bothub.studio 에서 회원 가입을 해주세요. - 무료 봇 호스팅을 위해 필요합니다.
위의 3가지 과정이 완료되셨다면 봇 제작을 위한 SDK 및 CLI 툴을 설치하겠습니다.
$ pip install bothub-cli
설치가 완료되면 BotHub.Studio 와 연결을 위해 configure 작업을 진행합니다.
$ bothub configure Username: myuser (회원 가입시 등록한 username 입니다. e-mail 주소 아닙니다.) Password: mysecret
예제를 만들 폴더를 생성하고 해당 폴더에서 init 작업을 진행합니다. 여기선 편의를 위해 ex01 로 하겠습니다.
$ mkdir ex01 $ cd ex01 $ bothub init Project name: ex01_myname (Project name은 유니크하게 생성해주세요.)
여기까지 진행이 완료되면 폴더 안에 기본 템플릿이 구성됩니다.bothub/bot.py
가 봇 동작을 위한 기본 파일입니다.
bot.py
안에는 기본 템플릿으로 에코봇 소스가 구성되어 있습니다.
즉, 오늘 만들어 보기 위한 에코봇은 사실 기본 템플릿이라서 특별히 코딩을 진행하진 않습니다.
다만 어떻게 구성되어 있는지는 보시면 좋습니다.
그럼 기본 템플릿으로 에코봇이 구성되어 있다면 이제 이걸 텔레그램에서 동작하게 해야겠지요?
이제 위에서 만들었던 텔레그램 액세스 토큰이 필요합니다.
텔레그램 연결
$ bothub channel add telegram --api-key=
텔레그램 봇과 연결이 완료되었습니다.
이제 작성한(아니 작성하지 않았지만 템플릿이 포함된) 코드를 서버로 올려줘야 합니다. 그래야 텔레그램 봇에게 메시지를 보내면 받아서 처리할 수 있습니다.
코드 업로드 (ex01 폴더에서 진행합니다.)
$ bothub deploy
이제 모두 완료되었습니다. 이제 봇한테 한번 말을 걸어보세요.
텔레그램에서 위에서 생성했던 이름 "@Username" 으로 찾으시면 됩니다.
잘 동작하시나요?
정상적으로 동작한다면 위에 스크린샷처럼 대화가 진행됩니다.
이렇게도(?) 봇을 만들 수 있다는걸 보여드리기 위해 딱 필요한 내용만 정리를 하다보니 자세한 설명들이 생략되어 있기도 합니다..
하지만 기존에 텔레그램 봇 만들기 강좌를 보신적이 있으시다면 귀찮은 많은 과정을 건너뛸 수 있다는걸 아실겁니다.
강좌 게시판에 적합하다고 생각되시면 다음에는 좀 더 활용 가능한 예제로 강좌를 진행해 보도록 하겠습니다!
다음편이 빨리 나오길 기대하겠습니다
DeployFailed: Deploy has failed 나오네요. 뭔가 확인해 볼 방법이 없을까요?
참고로 Windows10 환경입니다.
----
[9/12] deploy하고 메신저에서 동작확인했습니다. 감사합니다.