채팅 자동응답 봇
1. 개요
[image]
카카오톡 봇을 구동할 때 사용할 수 있는 앱들 중 하나로, 단순 자동응답, 자바스크립트, 커피스크립트, 루아, 라코스크립트[2] , Visual Basic, IceBlock.js(일반 자동응답)[3] 을 사용하여 개발할 수 있는 카카오톡 봇 어플이다. 특이점으로는 단순 자동응답 기능만을 사용할 경우 자체적인 UI 및 API를 통한 개발환경을 지원하므로, 프로그래밍 지식이 없어도 카카오톡 봇을 개발할 수 있다. 때문에 카카오톡 봇에 처음 입문하는 사람들이 사용하기에 편리하다.
2. 제작 방법
우선, 카카오톡 봇의 대부분은 자바스크립트[4] 를 사용하기 때문에 자바스크립트의 기본 개념을 학습하고 강좌를 보는 것이 더욱 좋다. 그러니 되도록이면 자바스크립트를 미리 학습하는 것이 효과적이다. 원래, 자바스크립트를 지원하는 카톡봇 구동 앱은 기본적인 프로그래밍 지식이 있는 사람들이 쓰라고 만들어진 것이다.
하지만 채팅 자동응답 봇은 단순 자동응답 기능이 있어서 프로그래밍 지식이 없는 사람들도 사용이 가능하기에, 초보자나 처음 시작하는 사람들에게 추천되고는 한다.
유일하게 단순 자동응답 기능을 지원한다고 알려져 있으나, 단순 자동응답 기능만 지원하거나, 자동응답 기능도 지원하는 다른 앱들도 존재한다. 다만, 단순 자동응답 기능에서의 자유도는 채팅 자동응답 봇이 가장 높다고 볼 수도 있다.
카카오톡 봇을 개발하는 사람들이 많아지면서 강좌가 많아지고 있다.
2.1. 단순 자동응답 사용
기본적인 틀은 A라고 말하면 B라고 답하라와 같은 구조로 설정되며, 채팅방 이름이나 보낸 사람의 이름에 따라 작동 여부를 결정하도록 설정할 수도 있다.
앱 내부에서 태그라고 불리는 [\[\이렇게\]\] 생긴 것들이 있는데, 그 태그들을 이용하여 특정 문구를 인용하거나, 특정한 동작을 실행할 수 있다.
예를 들어, \[\[보낸사람\]\]이라고 적어놓으면 단순 자동응답이 처리될 때 \[\[보낸사람\]\]이라고 적힌 부분이 채팅을 보낸 사람의 이름으로 변경되고, \[\[토스트|응답 테스트\]\] 라고 적어놓으면 해당 문구가 지워지고 토스트 메시지로 '응답 테스트'라는 문구가 출력된다.
태그들 중 \[\[만약\]\], \[\[변수\]\] 태그와 같은 프로그래밍적 요소가 있기 때문에, 다른 단순 자동응답 앱들보다는 자유도가 높은 편이다. 예를 들어, \[\[내용\]\] 태그와 \[\[삭제\]\] 태그를 이용하여 따라하기 기능을 만들 수 있다.
2.1.1. 태그 목록
- \[\[보낸사람\]\] : 보낸 사람의 이름 인용.
- \[\[내용\]\] : 수신된 채팅의 내용 인용
- \[\[이전내용\]\] : 직전에 수신된 채팅의 내용 인용
- \[\[방\]\] : 채팅이 수신된 방의 이름 인용
- \[\[전체보기\]\] : 해당 문구 뒤에 나오는 내용을 전체보기 안으로 넣음.[5]
- \[\[날짜\]\] : 현재 날짜 인용
- \[\[시간\]\] : 현재 시간 인용
- \[\[월\]\] : 현재 월 인용
- \[\[일\]\] : 현재 날짜(일) 인용
- \[\[시\]\] : 현재 시간(시) 인용
- \[\[분\]\] : 현재 시간(분) 인용
- \[\[초\]\] : 현재 시간(초) 인용
- \[\[랜덤|내용1|내용2...\]\] : 내용1, 내용2, 내용3... 중 하나를 인용
- \[\[변경|대상내용|바꿀내용|바뀔내용\]\] : 대상내용에 들어간 내용 중 특정 내용을 다른 내용으로 변경
- \[\[모두변경|대상내용|바꿀내용|바뀔내용\]\] : 대상내용에 들어간 내용 중 모든 특정 내용을 다른 내용으로 변경
- \[\[삭제|대상내용|지울내용\]\] : 대상내용에 들어간 내용 중 특정 내용 삭제
- \[\[모두삭제|대상내용|지울내용\]\] : 대상내용에 들어간 내용 중 모든 특정 내용 삭제
- \[\[변수|이름|값\]\] : 해당 이름에 값을 저장합니다. 채팅방마다 따로따로 적용됩니다.
- \[\[변수|이름\]\] : 해당 이름에 저장된 값을 인용합니다. 채팅방마다 따로따로 적용됩니다.
- \[\[변수|이름|더하기|값\]\] : 해당 변수의 값을 증가시킵니다. 숫자가 저장된 경우에만 작동합니다.
- \[\[변수|이름|빼기|값\]\] : 해당 변수의 값을 감소시킵니다. 숫자가 저장된 경우에만 작동합니다.
- \[\[변수|이름|붙이기|값\]\] : 해당 변수의 값 뒤에 새로운 값을 붙입니다.
- \[\[전체변수|이름|값\]\] : 해당 이름에 값을 저장합니다. 채팅방 구분을 하지 않습니다.
- \[\[전체변수|이름\]\] : 해당 이름에 저장된 값을 인용합니다. 채팅방 구분을 하지 않습니다.
- \[\[전체변수|이름|더하기|값\]\] : 해당 전체변수의 값을 증가시킵니다. 숫자가 저장된 경우에만 작동합니다.
- \[\[전체변수|이름|빼기|값\]\] : 해당 전체변수의 값을 감소시킵니다. 숫자가 저장된 경우에만 작동합니다.
- \[\[전체변수|이름|붙이기|값\]\] : 해당 전체변수의 값 뒤에 새로운 값을 붙입니다.
- \[\[토스트|내용\]\] : 해당 내용을 토스트 메시지로 출력
- \[\[상단바|제목|내용\]\] : 상단바에 해당 제목과 내용을 가진 알림을 띄움
- \[\[상단바|제목|내용|정보\]\] : 상단바에 해당 제목과 내용, 정보를 가진 알림을 띄움
- \[\[알림창|제목|내용\]\] : 해당 제목과 내용을 가진 알림창을 띄움
- \[\[ON\]\] : 봇이 작동하도록 설정
- \[\[OFF\]\] : 봇이 작동하지 않도록 설정
- \[\[만약|조건|참일때|거짓일때\]\] : 실행될 때, 만약 조건이 참이면 참일 때 부분으로, 거짓이면 거짓일 때 부분으로 변경됩니다.
- \[\[같다|값1|값2\]\] : 값1과 값2가 같으면 참, 다르면 거짓이 됩니다. \[\[만약\]\] 태그에서 조건 부분에 넣으면 됩니다.
- \[\[다르다|값1|값2\]\] : 값1과 값2가 다르면 참, 같으면 거짓이 됩니다. \[\[만약\]\] 태그에서 조건 부분에 넣으면 됩니다.
- \[\[이상|값1|값2\]\] : 값1이 값2보다 크거나 같으면 참, 작으면 거짓이 되며, 수만 비교할 수 있습니다. \[\[만약\]\] 태그에서 조건 부분에 넣으면 됩니다.
- \[\[이하|값1|값2\]\] : 값1이 값2보다 작거나 같으면 참, 크면 거짓이 되며, 수만 비교할 수 있습니다. \[\[만약\]\] 태그에서 조건 부분에 넣으면 됩니다.
- \[\[초과|값1|값2\]\] : 값1이 값2보다 크면 참, 작거나 같으면 거짓이 되며, 수만 비교할 수 있습니다. \[\[만약\]\] 태그에서 조건 부분에 넣으면 됩니다.
- \[\[미만|값1|값2\]\] : 값1이 값2보다 작으면 참, 크거나 같으면 거짓이 되며, 수만 비교할 수 있습니다. \[\[만약\]\] 태그에서 조건 부분에 넣으면 됩니다.
- \[\[목록|이름|추가|값\]\] : 해당 이름을 가진 목록에 해당 값을 추가합니다.
- \[\[목록|이름|삭제|값\]\] : 해당 이름을 가진 목록에 해당 값을 삭제합니다.
- \[\[목록|이름|포함|값\]\] : 해당 이름을 가진 목록에 해당 값이 포함되어있으면 참, 아니면 거짓이 됩니다.
- \[\[목록|이름|랜덤\]\] : 해당 이름을 가진 목록에 있는 값들 중 아무거나 하나 가져옵니다.
- \[\[목록|이름|초기화\]\] : 해당 이름을 가진 목록에 있는 값을 모두 삭제합니다.
- \[\[목록|이름|길이\]\] : 해당 이름을 가진 목록에 값이 몇 개 들어가있는지 가지고옵니다.
- \[\[목록|이름|위치\]\] : 해당 이름을 가진 목록에 있는 값들 해당 위치에 있는 값을 가져옵니다.
- \[\[목록|이름\]\] : 해당 이름을 가진 목록의 내용을 출력합니다.
- \[\[파일|이름|값\]\] : 해당 파일에 해당 값 저장
- \[\[파일|이름\]\] : 해당 파일에 저장된 값을 불러옴
- \[\[차단|닉네임\]\] : 해당 닉네임을 가진 사람을 차단.
- \[\[차단해제|닉네임\]\] : 해당 닉네임을 가진 사람의 차단을 해제
- \[\[차단초기화\]\] : 차단 목록을 초기화
- \[\[URL|내용\]\] : 해당 내용을 URL 인코딩시킴
- \[\[클립보드|내용\]\] : 해당 내용을 클립보드로 복사
- \[\[크롤링|url\]\] : 해당 url의 HTML 소스를 가지고 옴
- \[\[태그삭제|내용\]\] : 해당 내용에 있는 HTML 태그들을 삭제합니다.
- \[\[자르기|내용|문자열|위치\]\] : 해당 내용을 해당 문자열을 기준으로 잘라서 목록으로 만든 뒤, 해당 목록에 해당 위치에 있는 내용을 가지고옴
- 버전 3.6에서 삭제
- 버전 3.4에서 삭제
3. 여담
수신 채팅과 응답 내용과 또 그 채팅을 보낸 사람도 같은 내용의 응답 봇을 보유하고있으면 무한으로 도배가 가능하다.
이게 무슨 소리냐면 예를 들어 '안녕'이라는 채팅을 수신해서 '나도 안녕'이라고 답한다. 그런데 그 '안녕'이라는 채팅을 보낸 사람도 '안녕'이이 포함된 채팅을 수신해서 '나도 안녕' 이라고 답하는 봇을 가지고 있다. 그러면은 우선 한 명이 '안녕' 이라고 보낸 다음에 바로 나간다. 그러면 안녕이라는 말을 수신해서 안녕이라고 보내고 또 그사람이 안녕이라는 말을 수신해서 또 안녕이라고 보내고... 하지만 옾챗같은데에서 사용하면 도배했다고 밴당하기 일쑤니까 친구끼리 하자.
하지만, 채팅 자동응답 봇에서 단순 자동응답 기능을 사용하는 경우, 동일한 채팅이 연속으로 수신되면 반응하지 않도록 하는 도배 방지 기능이 기본적으로 활성화되며, 봇 설정에서 끌 수 있다. 봇 제작을 나름 오래 하였던 사람들은 자신의 봇에 도배 방지 정도는 기본적으로 구현해둔다.
이러한 현상은 채팅 자동응답 봇 등장 이전부터 존재하였기에, 일부 카톡봇 관련 채팅방들에서는 인사에 반응하여 따라 인사를 해주거나, ㅋㅋ와 같은 채팅을 보내면 따라서 웃는 기능, 비속어 감지와 같이, 동일한 기능을 가진 봇이 둘 이상 있으면 무한 루프가 일어나는 기능을 포함하고 있는 봇의 가동을 금지하기도 한다.
[1] 채자봇, 초록봇이라고도 하며, 제작자의 닉네임을 따서 닼토봇이라고도 한다. 당시에는 봇 제작자의 닉네임 뒤에 -봇을 붙이는 방법으로 봇 구동 앱을 구분하였었다.[2] 채팅 자동응답 봇에서만 존재하는 언어 비스무리한 것으로, 자바스크립트로 컴파일되는 언어이며 한국어로 코드를 작성할 수 있다는 특징이 있다. 단계적으로 지원중단 중이다.[3] 블록코딩과 유사한 환경[4] 정확하게는, 모질라 재단에서 개발한 자바 기반 자바스크립트 구현 라이브러리인 'Rhino' 엔진을 사용한다.[5] 정확히는 투명문자 1000자를 반환하는 것이며, 카카오톡은 500자(구버전은 1000자)가 넘어가면, 그 뒷부분이 전체보기 처리되는 것을 이용하는 방식