카카오톡 봇/제작법

최근 편집일시 :


파일:나무위키+상위문서.png   상위 문서: 카카오톡 봇

1. 개요
3.1. Node.js (remote-kakao)
4. 단순 자동응답
5. 일반 자동응답 (IceBlock.js)
10. 기타
11. 기술
11.1. 로컬 DB 접근
11.2. 카카오링크
11.3. share-Kakao
11.4. LOCO Protocol 호환 라이브러리
12. PC로 카카오톡 봇 제작법
12.1. ftp


1. 개요[편집]


이문서에서 공식봇, 비공식봇의 제작방법을 간략하게 설명한다.

이 문서에서 설명한 방법대로 봇을 사용하다 카카오 약관에 위반하여 걸린 정지에 대해서는 아무도 책임을 지지 않는다.


2. 방장봇[편집]



카카오톡에서 현재 지원중인 공식 봇이다.

아주 기초적인 환영메세지, 알림메세지, 자동응답 총 3가지를 지원한다.
현재 모든 오픈채팅방에 있으며[1] 카카오톡 공식 봇답게 UI가 직관적이고 개발하기 편리하다.

방장봇 비슷한 것을 사용하는 오픈채팅방도 있다. (비공식)


3. 자바스크립트[편집]


가장 기초적이고 비공식봇을 만드는 사람들에게 가장 친숙한 봇을 만드는 방법이다. 거의 모든 봇에서 지원하는 언어이다. 현재 출시된 봇 구동 앱에서는 라이노 자바스크립트 엔진을 사용한다

봇 스크립팅 문화가 가장 발달되어있는 언어이다.

이에 대해서는 카카오톡 봇 문서에 많은 방법이 서술되어 있으므로 여기에선 정말 간단하게 소개하겠다. 봇을 만들때 문서를 참고하면 좋을것이다. #

기본적으로 제공되는 response함수는 다음과 같다.
function response (room, msg, sender, isGroupChat, replier, imageDB, packageName) {
    //여기에 소스를 쓰면 된다.
}



3.1. Node.js (remote-kakao)[편집]


어떤 비공식봇 개발자가 만든 Node.js로 카톡봇을 만드는 라이브러리이다. 이 라이브러리로 카카오링크를 사용할 수 있을 정도로 호환성이 매우 좋은 편이다[2].

여담으로 최근에는 http방식으로 보냈던 기존 방식과 달리 socket.io를 이용하여 카톡봇을 돌리게 해준다

이건 공식 소개 글에 있는 예제 코드이다.
import { RKClient } from 'remote-kakao';

const client = new RKClient();
const prefix = '>';

client.on('login', (port) => {
  console.log(`http://localhost:${port}`);
});

client.on('message', (message) => {
  if (!message.content.startsWith(prefix)) return;

  const args = message.content.split(' ');
  const cmd = args.shift();

  if (cmd === 'add') {
    if (args.length <= 2) return message.reply('최소 두 개의 더할 수를 보내주세요 ㅠㅠ');

    let sum = 0;
    args.forEach((n: string) => {
      if (!isNaN(Number(n))) sum += Number(n);
    });
    message.reply(sum);
  }
});

client.login();


깃허브[3]


4. 단순 자동응답[편집]


코딩도 모르고 정말 처음 시작할때 많이들 입문으로 시작하는 봇 제작 방식 중 하나이다.

단순 자동응답은 기능 창시자가 프로그래밍 언어로 인정하지 않는다.[4]
파일:나무위키상세내용.png   자세한 내용은 채팅 자동응답 봇 문서를 참고하십시오.



5. 일반 자동응답 (IceBlock.js)[편집]


채자봇에서만 지원하는 기능으로, 블록코딩과 유사한 환경에서 로직을 만들면, 그 로직에 대응되는 자바스크립트 소스를 생성하여, 라이노 엔진에서 구동하는 방식으로 작동한다.
처음에는 IceBlock.js라는 이름으로 추가되었었다.


6. 커피스크립트[편집]


이것도 오직 채자봇에서만 지원하는 언어이다. 채자봇 내부에 커피스크립트 컴파일러가 내장되어있으며, 해당 컴파일러를 통해 자바스크립트로 트랜스컴파일한 뒤에 라이노 엔진에서 실행한다.


7. 루아[편집]


이것도 오직 채자봇에서만 지원하는 언어이다. LuaJ라는 엔진을 통해 구동한다.


8. Visual Basic[편집]


이것도 오직 채자봇에서만 지원하는 언어이다. vb2js를 통해 자바스크립트로 트랜스컴파일 후 라이노 엔진에서 구동한다.


9. Python[편집]


이떤 비공식봇 개발자가 만든 Python으로 카톡봇을 만드는 라이브러리이다.


10. 기타[편집]


물론 이것말고도 여러가지로 만들수 있다. 만들어 지지 않았을뿐.
카톡봇의 원리를 이해하면 안드로이드 스튜디오 같은 IDE로 충분히 만들수 있다!


11. 기술[편집]




11.1. 로컬 DB 접근[편집]


스마트폰의 루트 경로에 있는 카카오톡의 DB에 접근하여 정보를 가지고 오는 방식으로, 메세지를 보내는 것과 같이 어떠한 동작을 하는 방법이 아닌 오직 읽기만 하는(read-only) 기법이다.

카카오톡 DB에는 입퇴장 기록 및 누가 누구를 강퇴하였는지, 누가 보낸 메시지를 누가 가렸는지, 가려지거나 삭제된 채팅의 원본 메시지 등이 저장[5]되기에 입퇴장 감지 및 강퇴 인식, 가리거나 지운 채팅(미디어 파일 포함[6])이 무엇인지 확인하는 기능을 구현할 수 있다.

추가적으로, 유저아이디 분석이 가능한 점을 이용하여 들낙 감지가 가능하다.


11.2. 카카오링크[편집]


카카오링크는 원래 카카오에서 공식적으로 제공하는 API 중 하나로, 다음과 같이 생긴 것을 채팅방에 수동으로[7] 전송하는 것이다.

파일:카카오링크.jpg

위의 과정을 자동화시킨 모듈이 존재하며, 대부분 해당 모듈을 통해 카카오링크를 자동으로 전송하는 방법을 사용하며, 카카오링크에 이미지를 포함시킬 수 있기에 사진 전송 대용으로 사용되곤 한다.
엄밀히 말하면 이 기능은 공식적으로 제공하는 기능이 아니다. 카카오링크 자체는 공식 API가 맞지만, 봇이 자동으로 보내는 것은 어느 개발자가 보내는 걸 분석하여 만든 것 이다
이런 모듈들은 언어마다 존재하는데, python에는 kaling이, javascript에는 kaling.js가 존재한다.


11.3. share-Kakao[편집]


카카오톡의 공유기능을 사용하여 만들어진 모듈이다. 무려 카카오링크와 달리 그냥 이미지를 보낼수 있다.[8]
동영상, 지도 여러가지 타입을 보낼수 있으며, 맨션도 가능하다![9] 다만 답장은 불가능하다.

이 방법은 위에 설명한 카카오톡 로컬 DB 접근이 가능해야하며[10], 비교적 최근에 발견된 방법이기에 곧 막힐수도 있다.

모듈 링크는 여기다. #


11.4. LOCO Protocol 호환 라이브러리[편집]


카카오톡에서 사용하는 LOCO 프로토콜을 분석하여, 정상적인 카카오톡 클라이언트인 척 카카오톡 서버와 통신하는 방식도 존재한다.

절대로 이 문서에 카카오톡 리버스 엔지니어링 기반으로 작동하는 봇과 관련된 사용법 및 구현방법을 설명하지 않습니다.


12. PC로 카카오톡 봇 제작법[편집]


이 문단에서는 PC로 카카오톡 봇을 제작법을 설명한다.
근데 왜 아무것도 안써져있을까 섭섭하다


12.1. ftp[편집]


ftp로 카카오톡 봇을 제작하는 법을 설명할꺼다, 이방법은 컴파일은 자기가 직접하고 소스만 pc에서 제작한다
이런 불편이 있지만 다른 방법보다 연결이나, 너무 쉽기에 많은 사람이 사용한다.

이방법으로 코딩하면 보통은 vscode를 사용한다. 아톰이나 다른 IDE도 가능은하지만 매우 불편하므로 패스하겠다.
먼저 안드로이드 스마트폰에 'Ftp 서버' 라는 앱을 다운받는다. 그리고 앱을 실행한뒤 빨간 버튼을 눌러라, 그러면 초록색으로 변할것이고 밑에는 서버 아이피:포트 형식과 유저네임과 비밀번호가 나올것이다. 이제 vscode로 이동한다.

vscode에서도 확장프로그램으로 'ftp-simple'을 설치한다. 다 설치하면 F1키를 눌러 ftp를 검색한다, 누가봐도 설정이 있는걸 들어가면 json 형식으로 나오는데 이때 위 스마트폰에서 본 아이피와 포트, 닉네임, 비밀번호를 입력하고 저장한다음 다시 F1키를 눌러
ftp에 접속한다, 그러면 위에 메뉴으로 디렉토리를 정하고 봇 소스를 개발하면 된다.
파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-12-20 04:19:08에 나무위키 카카오톡 봇/제작법 문서에서 가져왔습니다.

[1] 몇몇 채팅방은 팬다 Jr. 봇을 사용하기도 한다.[2] 정확하게는 remote-kakao 라고 한다.[3] 나중에 밝혀진 사실이지만 소스를 갈아엎고 처음부터 다시 개발해서 파일이 싹 다 없어졌다.[4] 따라서 태그들의 조합 역시 소스 코드로 인정되지 않는다.[5] 채팅 삭제 기능은 실제로 채팅이 지워지는 것이 아닌, 보이지 않게 처리되는 것이다.[6] 파일의 경우 바로가기 링크 형태로 저장된다.[7] 카카오톡 앱 실행 후 친구 목록 또는 채팅방 목록에서 보낼 곳을 수동으로 선택[8] 하지만 카카오톡 서버안에서 있는거만 가능하다.[9] 이유는 이 방식 어테치멘트를 수정하여 보낼수 있기 때문이다.[10] DB가 안되도 가능은 하지만 내부에서 사용하는 키가 매일매일 바뀐다.