mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-11-03 19:13:26

카카오톡 봇

카카오톡봇에서 넘어옴
{{{#!wiki style="margin:-10px" <tablebordercolor=#facc2e><tablebgcolor=#facc2e> 파일:카카오톡 아이콘.svg 카카오톡
관련 문서
}}}
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px; word-break: keep-all"
<colbgcolor=#facc2e,#3a212b><colcolor=#3a212b,#facc2e> 기능 단톡방 · 카카오 이모티콘 · 카카오톡 채널 · 샵검색 · 카카오톡 선물하기 · 카카오톡 쇼핑하기 · 카카오쇼핑라이브 · 카카오톡 게임별 · 카카오톡 봇( 제작법 · 팬다 Jr. 봇 · 오픈채팅봇) · 카카오톡 지갑
문제점 및 비판 카카오톡 사찰 논란 · 여성가족부 불법촬영물 오픈채팅방 단속 논란 · 인터넷 검열감시법 시행 사태 · 단톡방 성희롱 · 카카오톡 감옥
사건사고 클리앙 오픈채팅 여론조작 사건 · SK C&C 판교 데이터센터 화재로 인한 인터넷 서비스 장애 사건 · 카카오톡 AI 남성혐오 학습 논란
기타 업데이트 내역 · 반톡 · 먹통 논란
}}}}}}}}} ||

1. 개요2. 비공식 카카오톡 봇3. 관련 커뮤니티4. 작동 원리5. 제작 방법6. 구동 목록7. 봇 목록8. 유의사항9. 논란 및 사건사고
9.1. 나는 원숭이다. 사건9.2. 대규모 정지 사태
9.2.1. 나는 원숭이다. 대규모 정지사태9.2.2. 2021년 3월 3일 대규모 정지사태
9.3. 카카오톡 알림 구조 변동으로 인한 오작동
9.3.1. 카카오톡 9.7.0 업데이트9.3.2. 카카오톡 9.7.5 업데이트
10. 여담

1. 개요

카카오톡 은 프로그래밍할 수 있는, 스마트폰 메신저 카카오톡에서 사용 가능한 자동 응답 기능을 가리키는 말이다. 줄여서 '카톡봇'. 보통은 카카오톡의 채팅방의 한 종류인 오픈채팅방에서 사용하지만 일반 단체 채팅방이나 1:1 채팅방에서도 사용할 수 있다.

원래는 카카오에서 공식 지원하는 기능이 아닌 사설 앱을 사용하여 유저들이 만들어 쓰던 기능만 존재했는데, 2020년 7월 21일 공식 오픈채팅 봇이 생겼다. 이름은 오픈채팅봇[1]으로, 아래에 쓰여진 봇 설명의 경우 이 방장봇이 아닌 유저 제작 봇을 주로 설명하니 참고할 것. 주로 카카오톡에서 쓰이지만, 다른 메신저 에서 지원하기도 한다.
[주의]현재 본 문서에서 다루는 내용은 카카오톡의 공식 API를 이용한 것이 아닌 비공식적인 방법을 이야기하고 있다.

2. 비공식 카카오톡 봇

오픈채팅봇, 팬더 Jr과 같은 카카오톡 자체에서 지원하는 봇을 제외한 사용자가 직접 만든 봇을 말한다. 카카오톡 봇을 만들기 위해서는 메신저봇R, 채팅자동응답봇 등을 설치해 사용한다.

3. 관련 커뮤니티

카카오톡 봇에 관련된 정보들과 사용법을 알려주는 커뮤니티다. 카톡봇 강의, 코드 공유, 관련된 질문 혹은 여러 꿀팁들을 접해볼 수 있다.

https://cafe.naver.com/devlobots
https://cafe.naver.com/msgbot
https://cafe.naver.com/nameyee
https://cafe.naver.com/brown7crfc

4. 작동 원리

먼저, 카카오톡 카카오톡 봇 구동 어플[2]이 필요하다. 안드로이드 7.0 미만일 경우엔 Wear OS by Google[3] 앱의 설치도 필요했다. 이제 안드로이드 7.0 미만에서는 카카오톡 자체가 작동하지 않으니 신경쓰지 않아도 되는 부분.

봇 앱의 (상단바) 알림 읽기 기능을 켜면, 봇 앱은 안드로이드의 'NotificationListenerService' 기능을 이용해 지정된 패키지의 앱[4]이 보내는 알림을 읽어온다. 그러면 자바스크립트[5]로 작성된 스크립트 내부의 'response'라는 이벤트 리스너[6]가 호출된다. 이때, 알림에서 읽어온 방 제목, 보낸 이, 메시지 등이 매개변수로 넘어오고,[7] 봇 스크립트 'response' 함수 내부에서 채팅 데이터를 처리한다. 자동 응답의 경우 'replier.reply'[8] 함수가 호출되면 봇 앱은 설정된 메시지로 답장한다.[9]

5. 제작 방법

파일:상세 내용 아이콘.svg   자세한 내용은 카카오톡 봇/제작법 문서
번 문단을
부분을
참고하십시오.
제작에 앞서, 카카오톡 봇의 대부분은 자바스크립트[10]를 사용하기 때문에 되도록이면 자바스크립트의 기본 개념을 학습하고 봇 개발을 시작하는 것을 추천한다. 그러나 코딩 없이 간단하게 봇 기능을 설정할 수 있는 앱도 있기에, 초심자의 경우 이런 류의 앱을 사용해도 나쁘지 않다. 봇 앱의 종류는 후술.

그리고 카카오톡 봇을 개발하는 것은 많이 활성화가 되어 있지 않아서 유튜브에 있는 카카오톡 봇 강좌는 찾아보기 힘들며, 있다고 해도 대부분 매우 기초적인 과정만 강의하고 무엇보다 영상의 품질이 떨어진다. 그러면 영어로 구글링을 하면 되는 거 아닌가? 할 수 있는데, 카카오톡이 해외에서는 듣보이므로 당연히 의미가 없다(...) 구글이나 네이버, 다음과 같은 국내 포털사이트에서 봇 관련 강좌를 검색하면 내용이 일부 존재하므로 이를 따라하며 시작해도 좋다. 하지만 이 역시 정보의 수가 많지 않으므로 복잡한 코딩을 하고자 한다면 자바스크립트에 대한 이해가 필수.

다만, 2020년 초부터 꾸준히 내용이 추가되고 있는 카카오톡 봇을 위한 카카오톡 봇 문서가 존재한다

제작 방법의 경우 봇 구동 앱별로 차이가 있지만, 대부분 앱 내에서 스크립트를 생성하여, 자바스크립트를 통해 코딩하고, 이를 활성화하면 된다. 코딩 방법의 경우도 앱마다 차이가 있으므로, 앱의 이름을 확인하고 강좌를 찾아보기 바란다.

그 외 방식
2020년 카카오톡 오픈채팅방에서 텍스트 RPG 제작자 "GM스페" 라는 제작자가 PC카톡 방식을 알렸고 2017년도부터 2018년도 까지 "레스"라는 (Quiz봇)제작자와 각각의 방식으로 PC카톡 봇을 제작했다고 한다

이는 자바스크립트 방식과는 다르게 PC카톡 클라이언트의 메모리를 후킹하여 메시지를 캡처하는 방식으로 반응속도가 빠르며 자가응답이 가능한 특징이 있다

그 후 제작자 레스는 개발했던 PC카톡 API를 정리하여 2019년도에 공개하였다

6. 구동 목록

파일:채팅 자동응답 봇.png
이름 채팅 자동응답 봇[11]
개발자 Dark Tornado
플랫폼 안드로이드
Google Play 설치 링크
개발자 블로그

단순 자동응답[12], 자바스크립트, 커피스크립트, 루아, 라코스크립트[13], Visual Basic, IceBlock.js[14]를 사용하여 개발할 수 있는 카카오톡 봇 앱이다.
단순 자동응답 기능을 위한 API와 개발 환경이 있어, 프로그래밍 지식이 없는 입문자들이 쉽게 개발할 수 있다.

개발자가 실수로 앱 프로젝트를 날려먹어서 업데이트가 사실상 멈춰있다.

파일:메신저봇R.jpg
이름 메신저봇 R[15]
개발자 Violet XF
플랫폼 안드로이드
Google Play 설치 링크

메신저봇의 후속 버전이다. 메신저봇보다 더 많은 기능을 지원하며, 현재 가장 많이 쓰이는 봇 앱이다.

2021년 4월 21일경, 플레이 스토어 정책 위반으로 플레이 스토어에서 삭제되었다.
메신저봇은 사용자가 봇 스크립트 내에서 위치 정보를 불러올 수 있게 하기 위해 위치 정보 권한을 요구할 수 있도록 구현하였는데, 플레이 스토어의 정책이 변경됨에 따라서 정책 위반이 된 것이다. 2021년 6월 13일에 복구가 완료되었다.

개발자가 임시로 바뀌면서 대규모 업데이트가 예정되있는 상태이다
위에 나열된 앱 말고도 지금은 더 이상 한국 플레이 스토어에 뜨지 않거나, 게시되지 않은 앱 등이 존재한다.

7. 봇 목록

7.1. 팬다 Jr. 봇 오픈채팅 봇(구 방장봇)

파일:상세 내용 아이콘.svg   자세한 내용은 팬다 Jr. 봇 문서
번 문단을
부분을
참고하십시오.
파일:상세 내용 아이콘.svg   자세한 내용은 오픈채팅봇 문서
번 문단을
부분을
참고하십시오.

상술했듯이 카카오톡 앱 내에 리소스로 존재하며 공식적으로 운영하는 봇이다. 앱 내에 내장되어 있기 때문에 반응속도가 굉장히 빠르며 유저들의 디컴파일도 이뤄지고 있다. 2018년부터 [age(2020-01-01)]년 전(2020년 7월)까지는 당시에는 정식으로 추가된 기능은 아니었으며, 오픈채팅 방들 중에 랜덤으로 등장하다가 7월 21일부터는 신설방 포함 모든 오픈채팅 방에서 활성화 가능 버튼이 등장한다. 기존에는 팬다 Jr. 봇이 등장했는데, 패치 이후 봇 활성화 시 방장봇이 대신 등장한다. 단, 팬다 Jr. 봇을 미리 활성화해둔 상태라면 계속 팬다 Jr. 봇을 이용할 수 있다. 기능으로는 반응할 메세지와 그에 대한 답변을 설정하는 기능과 시간 알림, 환영 메시지만 존재한다. 이마저도 10개 제한이 있으며, 개마다도 글자 수 제한이 있다. 환영메세지에는 공지 글 바로가기 버튼을 넣을 수 있는 기능이 있다. 이 점을 제외하면 현재는 유저 제작 봇의 기능이 훨씬 뛰어난 셈.

챗 데이터를 공식 api로 얻을 수 없기 때문에 아직까지 의미있는 봇은 아니다.

8. 유의사항

위의 작동방식에서 알 수 있다시피 카카오톡의 상단바 알림을 읽어와 작동하기에, 카카오톡의 알림을 끄거나 봇을 구동시킬 기기에서 봇을 구동시킬 계정으로 카카오톡 채팅방에 접속하고 있으면 알림이 표시되지 않아 작동하지 않는다.

카카오톡 본계정으로 봇을 돌리기엔 무리가 있으므로 공기계 노트북에서 봇을 돌리거나, 삼성 듀얼메신저[16]나 보안폴더 앱 또는 App Cloner 등의 앱 복제 앱으로 동일한 기기에서 돌리는 등의 방법등이 있다. 단 복제된 카톡의 패키지명이 기존의 카톡 앱 패키지 명과 동일할 경우, 봇 구동 앱이 원본 카톡과 복제된 카톡을 구분하지 못하여, 두 카톡 모두 봇으로 구동되는데, 이는 봇을 구동할 계정의 카카오톡 채팅방 이름을 특수하게 변경한 후, 그 이름을 가진 방에서만 작동하도록 코딩하거나, 아예 본계정쪽의 카톡 알림을 꺼버리는 방법이 있다. 현재는 구분할 수 있는 방법이 발견되었다.

부계정을 사용할 경우 투폰 서비스 등으로 번호 하나를 발급받거나, 가상번호 사이트나 Talkatone 등의 앱을 이용해 인증용으로 해외 가상번호를 발급받아 계정을 만들면 된다. 해외 가상번호의 경우 계정 생성 시 이용자 보호조치에 걸릴 수 있는데, 이 경우에는 다른 사람들로부터 선 채팅을 여러번 받으면 해결된다.[17]

그리고 절대로 eval 함수를 봇 안에 쓰지 말자.(제발) 정 쓰고 싶다면 기능으로 만들더라도 자신만 쓸 수 있게 만들거나, 구동 기기에 영향을 줄 요소를 싹 다 막아놓고 만들는 것이 좋다. 자세한건 eval 문서 참조.

수신 채팅과 응답 내용과 또 그 채팅을 보낸 사람도 같은 내용의 응답 봇을 보유하고있으면 무한으로 도배가 가능하다. 예를 들어, '안녕'이라는 단어가 포함된 채팅에 '안녕'이라는 내용이 포함된 채팅으로 반응하는 자동 인사봇이 둘 이상 있는 상태에서 누군가가 '안녕'이라는 문구가 포함된 인사를 하면, 처음에는 두 봇 그 사람의 인사에 반응하지만, 그 직후부터는 서로의 안녕이라는 말에 반응하며 채팅방을 도배하는 일이 벌어진다.

이는, 인사봇 뿐만 아니라, ㅋㅋ와 같은 채팅을 보내면 따라서 웃는 기능, 비속어 감지[18]와 같이, 다른 예시들도 존재하며, 이처럼 동일한 기능을 가진 봇이 둘 이상 있으면 무한 루프가 일어나는 기능을 포함하고 있는 봇의 가동을 금지하는 채팅방들도 존재한다.


파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는
문서의 r41
, 번 문단
에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r41 ( 이전 역사)
문서의 r ( 이전 역사)

9. 논란 및 사건사고

9.1. 나는 원숭이다. 사건


2020년 5월 22일 여러 카카오톡 오픈채팅방에서 우와 ㄷㄷ 이거 눌러봐요라는 문구와 버튼이 포함되어 있는 카카오링크로 이루어진 어떤 메시지가 전달된다.

문제는 그 메세지에 있는 버튼을 누르면 자기는 메세지를 보내지 않았지만, 나는 원숭이다. 라는 메세지가 자동으로 보내진다는 것이다. 해당 분야에 대하여 잘 모르는 사람들의 입장에서는 본인의 계정이 해킹당했다고 생각을 하였을 가능성이 높다.

카카오톡에서 재빨리 이에 대해서 사실이 아니라고 반박하였다. #
하지만, 카카오톡의 취약점을 이용한 해킹 기반으로 만들어진 카카오링크가 맞으며, 해당 취약점은 현재 보완되었다.[19]

이것이 정체는 카카오톡에서 사용하는 프로토콜 LOCO 프로토콜과 호환되는 라이브러리를 사용하여, 정상적인 카카오톡 클라이언트인 척 카카오 서버를 속이는 방식으로 전송된 채팅이다.
그중 채팅 강제 전송 부분은 카카오톡 내부 파일에 있는 scheme[20]을 이용한 것으로, 지금은 막혔다.[21]

이 사건으로 많은 사람들이 카카오톡 봇에 흥미를 느끼기 시작하였고[22], 카카오톡 봇에 대한 부정적인 인식이 나온 것이다.
지금도 가끔씩 LOCO 프로토콜 해킹 기반으로 전송된 이용한 메시지가 돌아다니고 있으며[23]. 심지어, 이를 이용하여 금전적 이익을 취하는 사람들까지 존재한다.
하지만 여러 커뮤니티에서 이를 엄격히 금지해 예전보다는 나아졌다.

지금도 가끔 코무에서 비판을 받곤 하다.

9.2. 대규모 정지 사태

대규모 정지 사태란 로코[24]를 사용하는 사람들 끼리 모인 단톡방에 카카오톡 전 관리자를 초대한 후 대규모로 영구정지를 먹은 사태인데 그들의 실제프로필을 찾은 사람은 밝혀졌지만 카카오톡은 영구정지 조치만 취하고 아무런 입장이 없다.

9.2.1. 나는 원숭이다. 대규모 정지사태

위에 문단에 있는 내용 그대로 진행 후, 대규모 정지사태가 벌어졌다. 이를 기점으로 로코[25]를 더욱 더 단속하기 시작했다.

9.2.2. 2021년 3월 3일 대규모 정지사태

2021년 3월 3일, 카카오톡 봇 계정 및 계정 소유자의 본계정이 대규모로 정지당하는 사태가 벌어졌다. 이는 현재진행형이다.[26]

대상은 외국번호, 즉 가상번호를 사용하는 부계정으로 추측된다. 대다수는 봇을 운영하는 부계정만 정지당하고 끝나지만, 본계정도 정지당하는 위험이 있다.

9.3. 카카오톡 알림 구조 변동으로 인한 오작동

9.3.1. 카카오톡 9.7.0 업데이트

방 이름이 저장된 곳이 바뀌어서, 봇 구동 앱들이 방 이름을 불러오지 못한다

옛날에는 방 이름이 'android.summaryText'라는 key로 담겨있었다. 이후에 정확이 언제인지는 알 수 없는 시점에는 방 이름이 방 이름이 'android.subText'라는 key로도 담겨있기 시작했다.

하지만, 2021년 2월 21일에 출시된 카카오톡 9.7.0부터 안드로이드 11 이상에서는 알림이 다르게 출력되도록 변경되었는데, 그 변동사항 중 하나가 'android.summaryText'라는 key가 사라지고, 'android.subText'라는 key만 남았다. 옛날부터 존재하여 업데이트되고 있던 메신저봇과 채팅 자동응답 봇은 'android.summaryText'에서 방 이름을 꺼내왔기 때문에 안드로이드 11 이상에서는 방 이름을 불러오지 못하고 모두 1:1 채팅방으로 처리되었다.
다만, 비교적 최근에 개발이 시작된 만능톡의 경우는, 애초부터 방 이름을 'android.subText'로부터 뽑아왔기 때문에 영향을 받지 않았다.

또한, 안드로이드 11부터는 채팅을 보낸 상대방의 프로필 사진이 들어가있는 곳에 방 아이콘이 들어가도록 변경되어 채팅을 보낸 상대방의 프로필 사진 역시 불러오지 못하고 있다.

채팅 자동응답 봇은 개발자의 깃허브에 대응 패치가 적용된 베타 버전이 올라오고, 메신저봇은 공식 카페에 직접 알림을 파싱하는 방식으로 작동하는 대응 소스가 올라왔으니, 해당 방법을 통해 해결할 수 있다.

9.3.2. 카카오톡 9.7.5 업데이트

응답을 보내는 동작이 삭제되어 채팅이 와도 응답을 보내지 못한다

안드로이드 앱 개발을 할 때, 상단바에 뜬 알림에서 어떠한 동작을 할 수 있게 해주는 것이 존재하며, 카카오톡의 알림을 예로 들자면 "채팅이 수신된 채팅방으로 응답을 보내는 동작"이 알림에 담겨있어서, 웨어러블 디바이스 등을 통해 카카오톡 채팅을 보낼 수 있는 것이다.
비공식 카카오톡 봇 역시 해당 방법을 통해 채팅이 수신된 채팅방으로 응답을 전송한다.

알림을 기반으로 작동하는 봇 구동 앱이 처음 개발되었을 때부터 존재하던 동작이 있고, 이후에 카카오톡에 업데이트되면서 동작 두 가지가 추가되어 총 3가지 동작이 알림에 담겨있었다.
원래부터 있던 동작 채팅이 수신된 채팅방으로 응답 전송
중간에 추가된 동작 1 채팅이 수신된 채팅방으로 응답 전송
중간에 추가된 동작 2 채팅이 수신된 채팅방에 채팅을 전송하지 않고 읽음 처리

그런데, 카카오톡 9.7.5부터 "원래부터 있던 동작"이 사라졌다. 메신저봇은 이미 중간에 추가된 동작들도 사용하는 방식을 통해 처리를 해두었기에 응답 전송이 가능했지만, 채팅 자동응답 봇의 경우는 원래부터 있던 동작만을 사용하였기에 봇 자체가 작동하지 않는 현상이 발생하였다
따라서, 이번에도 개발자의 깃허브에 대응 패치가 적용된 베타 버전이 출시되었다.

10. 여담


[1] 베타 테스트 당시 이름은 팬다 Jr.이다. [2] 여러 어플이 있었으나, 현재는 대부분의 어플이 카카오톡 측에서 이름 등에 ' Kakao'가 들어갔다는 이유로 구글에 신고되어 내려간 상황이다. 정확히는 어플은 남아있으나, 한국 Google Play 에서는 검색이 되지 않는다. [3] 또는 삼성 웨어러블도 가능하다 [4] 안드로이드는 각 앱마다 '패키지명'이라는 고유한 이름이 있다. 이 패키지명이 같은 앱은 내부 구조가 완전히 달라도 동일한 앱으로 인식하기에, 어떤 앱에서 알림을 전송했는지 구분이 가능하다.
예로 카카오톡의 패키지명은 'com.kakao.talk' 이다.
[5] 정확하게는, 모질라 재단에서 개발한 자바 기반 자바스크립트 구현 라이브러리인 'Rhino' 엔진을 사용한다. [6] 대다수의 봇 어플에서 호환성을 위해 response라는 이름을 사용하지만, 표준 API는 아니다. [7] 자바스크립트가 아닌 다른 언어를 지원하거나, 초심자용으로 아예 코딩 없이 사용할 수 있는 봇 구동 앱도 존재한다. [8] 앱마다 다를 수 있으나, 보통 답장 메소드의 경우 이를 사용한다. [9] 이때 봇 앱에서 Wear OS 관리 앱을 사용하여 답장을 보낸다. 안드로이드 7 이상이면 깔지 않아도 정상적으로 작동한다 [10] 정확하게는, 모질라 재단에서 개발한 자바 기반 자바스크립트 구현 라이브러리인 'Rhino' 엔진을 사용한다. [11] 채자봇, 초록봇이라고도 하며, 제작자의 닉네임을 따서 닼토봇이라고도 한다. 당시에는 봇 제작자의 닉네임 뒤에 -봇을 붙이는 방법으로 봇 앱을 구분하였다. [12] 지원 종료가 계획되어 있다. [13] 채팅 자동응답 봇에서만 존재하는 언어이다. 자바스크립트로 컴파일되며 한국어로 코드를 작성할 수 있다는 특징이 있다. 단계적으로 지원 중단 중이지만 구버전에서는 계속 사용할 수 있다. [14] 블록 코딩과 유사한 구조이다. [15] 알림 구조가 변경되어, 최신 안드로이드 환경에선 정상적으로 이용하기 위해선, 대응소스를 적용해야 한다. [16] 삼성 듀얼메신저는 기본 카카오톡 패키지명이 같으니 참고 [17] 현재 Talkatone으로 계정 생성 하는것은 막혔다 만약 만들려면 프리미엄을 사용해야 한다. [18] 감지한 비속어가 무엇인지도 출력하는 경우 [19] 해킹 기반으로 전송된 채팅은 맞지만, 위 기사에서 언급된 스니핑은 아니며, 오히려 스니핑보다는 스푸핑에 더 가깝다. [20] 원래는 챗봇에서 사용하는 방식이다. [21] 사실 아직 코드는 존재하나, 기존에는 모든 채팅방에서 전송이 가능했다면, 이제는 챗봇에게서만 전송이 가능하게 수정된 것이다. [22] 어느 봇 구동 앱 개발자의 블로그에 있던 카카오링크 자동 전송을 성공했다는 게시글이 중간에 그 글을 비공개로 돌렸음에도 그날 3000 조회수를 돌파했다 [23] 멘션한 흔적이 없으나 모든 채팅방 참여자들에게 멘션 알림이 오고, 채팅방에 들어가면 홍보 문구가 전송되어 있는 경우 등 [24] 노드카카오 [25] 노드카카오 [26] 현재는 정지를 당하는 사람이 많이 줄어들었다. 다만, 카카오 측에서 봇 계정 또는 해외 가상번호 계정이라고 인식한다면 정지에 걸리기 때문에 아직까지는 조심해야 한다.