스크립트 작성
카카오톡봇 프로젝트의 기본 스크립트를 분석하고 소스코드를 작성하는 방법을 소개합니다.
스크립트 열기
이전 문서에서 프로젝트를 생성하는 방법을 소개했습니다. 이제 코드를 살펴볼 차레입니다.
- 생성한 프로젝트를 클릭하세요.
- 연필 모양의 버튼을 클릭해 코드 편집 화면을 여세요.
카카오톡봇을 프로그래밍하는 화면입니다. 아래와 같이 기본적으로 작성된 코드가 존재합니다.
const bot = BotManager.getCurrentBot(); /** * (string) msg.content: 메시지의 내용 * (string) msg.room: 메시지를 받은 방 이름 * (User) msg.author: 메시지 전송자 * (string) msg.author.name: 메시지 전송자 이름 * (Image) msg.author.avatar: 메시지 전송자 프로필 사진 * (string) msg.author.avatar.getBase64() * (string | null) msg.author.userHash: 사용자의 고유 id * (boolean) msg.isGroupChat: 단체/오픈채팅 여부 * (boolean) msg.isDebugRoom: 디버그룸에서 받은 메시지일 시 true * (string) msg.packageName: 메시지를 받은 메신저의 패키지명 * (void) msg.reply(string): 답장하기 * (boolean) msg.isMention: 메세지 맨션 포함 여부 * (bigint) msg.logId: 각 메세지의 고유 id * (bigint) msg.channelId: 각 방의 고유 id */ function onMessage(msg) {} bot.addListener(Event.MESSAGE, onMessage); /** * (string) msg.content: 메시지의 내용 * (string) msg.room: 메시지를 받은 방 이름 * (User) msg.author: 메시지 전송자 * (string) msg.author.name: 메시지 전송자 이름 * (Image) msg.author.avatar: 메시지 전송자 프로필 사진 * (string) msg.author.avatar.getBase64() * (boolean) msg.isDebugRoom: 디버그룸에서 받은 메시지일 시 true * (boolean) msg.isGroupChat: 단체/오픈채팅 여부 * (string) msg.packageName: 메시지를 받은 메신저의 패키지명 * (void) msg.reply(string): 답장하기 * (string) msg.command: 명령어 이름 * (Array) msg.args: 명령어 인자 배열 */ function onCommand(msg) {} bot.setCommandPrefix("@"); //@로 시작하는 메시지를 command로 판단 bot.addListener(Event.COMMAND, onCommand); function onCreate(savedInstanceState, activity) { var textView = new android.widget.TextView(activity); textView.setText("Hello, World!"); textView.setTextColor(android.graphics.Color.DKGRAY); activity.setContentView(textView); } function onStart(activity) {} function onResume(activity) {} function onPause(activity) {} function onStop(activity) {} function onRestart(activity) {} function onDestroy(activity) {} function onBackPressed(activity) {} bot.addListener(Event.Activity.CREATE, onCreate); bot.addListener(Event.Activity.START, onStart); bot.addListener(Event.Activity.RESUME, onResume); bot.addListener(Event.Activity.PAUSE, onPause); bot.addListener(Event.Activity.STOP, onStop); bot.addListener(Event.Activity.RESTART, onRestart); bot.addListener(Event.Activity.DESTROY, onDestroy); bot.addListener(Event.Activity.BACK_PRESSED, onBackPressed);
스크립트 분석
기본적으로 작성되어있는 스크립트에서 기초적인 수준에서 필요한 코드는 아래와 같습니다. 해당 코드로 수정하세요.
const bot = BotManager.getCurrentBot(); function onMessage(msg) {} bot.addListener(Event.MESSAGE, onMessage); function onCommand(msg) {} bot.setCommandPrefix("@"); bot.addListener(Event.COMMAND, onCommand);
위 스크립트에 작성된 코드들의 의미를 소개합니다.
- 3번 줄
function onMessage(msg) {}
: 메시지가 올 때마다 중괄호 안의 코드를 작동합니다. - 6번 줄
function onCommand(msg) {}
: 명령어가 올 때마다 중괄호 안의 코드를 작동합니다. - 7번 줄
bot.setCommandPrefix("@");
: '@'로 시작하는 메시지를 명령어로 정의하기 위한 코드입니다. 예를 들어, 'hello'는 명령어로 인식하지 않고 '@help'는 명령어로 인식합니다.
스크립트 작성: 메시지 보내기
메시지를 보내는 코드는 msg.reply()
이며, 아래와 같이 function onMessage(msg) {}
나 function onCommand(msg) {}
의 중괄호 안에 작성해야 합니다. 코드를 작성할 때 가독성을 위해 중괄호 내부의 코드는 들여쓰기를 하고 작성하는 것을 권장합니다.
주의
아래 예제 코드는 실제 채팅방에서 작동할 경우 채팅방에 피해를 줄 수 있습니다.
const bot = BotManager.getCurrentBot(); function onMessage(msg) { msg.reply("Hello, world!"); } bot.addListener(Event.MESSAGE, onMessage); function onCommand(msg) {} bot.setCommandPrefix("@"); bot.addListener(Event.COMMAND, onCommand);
해당 코드는 메시지를 감지할 때마다 'Hello, world!'라는 메시지를 보냅니다. 메시지를 보내는 코드를 작성할 때 텍스트를 큰따옴표나 작은따옴표로 감싸야합니다.
msg.reply("Hello, world!"); // 정상 작동 msg.reply('Hello, world!'); // 정상 작동 msg.reply(Hello, world!); // 에러 발생
코드를 작성한 후, 변경사항을 저장하고 카카오톡봇을 작동시킬 준비를 하는 컴파일을 해야합니다.
- 코드 편집 화면에서 폴더 모양 버튼을 클릭하세요.
- "저장하고 컴파일" 버튼을 클릭하세요.
만약 '저장되었습니다' 메시지가 출력된 후 에러 메시지가 출력되었다면 올바르게 코드를 작성했는지 확인하세요.
테스트해보기: 디버깅룸
실제 채팅방에 적용하기 곤란하거나 미리 카카오톡봇을 테스트하고자 할 경우, 디버깅룸에서 테스트할 수 있습니다. 디버깅룸은 카카오톡 채팅방을 모방한 가상의 채팅방입니다.
- 코드 편집 화면에서 나가세요.
- 프로젝트 클릭 후 3번째 버튼(메시지 모양 버튼)을 클릭하세요.
이제 디버깅룸에 아무 메시지나 전송해보세요. 메시지를 전송할 때마다 'Hello, world!'라는 메시지가 오게 됩니다.