메신져봇앱에서의 방법과 메신져봇R 앱에서의 방법이 다른 경우가 있습니다. 

기존 메신져봇앱에서 기준으로 글을 작성하였으나, 큰 방식은 같으니 메신저봇R을 쓰시는 분들도 조금만 고생해 주신다면 따라하실 수 있습니다. 


카카오톡 봇 만들기 (유튜브 )
카카오톡 봇 만들기! #1 짧고 쉽고 간단하게~ https://youtu.be/It1uQuxegx0
카카오톡 봇 만들기! #2 가위바위보 https://youtu.be/VaQiSzzxLxs
카카오톡 봇 만들기! #3 실시간 검색어 순위 https://youtu.be/Wv0Sv83oLTg
카카오톡 봇 만들기! #번외1 메신져봇으로 갈아타자
https://youtu.be/ojgqvCK26XE
카카오톡 봇 만들기! #4 기능설명, 접어보기, 전체보기 https://youtu.be/Dg1IX-tIEu0
카카오톡 봇 만들기! #5 날씨 알려주기
https://youtu.be/7DNaqFJYm5A
카카오톡 봇 만들기! #6 ftp 원격코딩, 코드관리
https://youtu.be/0nVmajTTNv4
메신져봇 앱으로 카카오톡 봇 만들기! #7 파일 읽고 저장하기
https://youtu.be/PMi7S-92VII
취소선은 2020년 3월 8일 22시 기준 작동불가인것

 

ftp를 이용한 카카오톡 원격코딩 방법을 알려드리겠습니다. 

 

오늘은 코딩보다는 코딩을 위한 프로그램 설치가 더 많아요.

 


 

오늘 할거 요약
1. 공기계에서 ftp 설정
2. 파일질라 (FileZilla) 설치
3. 비쥬얼 스튜디오 코드(Visual Studio Code) 설치
3-1. 비쥬얼 스튜디오 코드 필수 애드온 설치
4. 메신져봇 내장 Api를 사용하여 코드관리 하기

작은 핸드폰 화면으로 코딩하기가 여간 쉽지 않습니다. 

 

하이라이트도 없고, 렉걸리고 ... 생각만해도 숨이 막힙니다. 

 

컴퓨터에서 코딩할 수 있다면 얼마나 편할까요?

 

그 방법을 알려드리겠습니다.

 

 


1. 공기계를 ftp서버로 만들어주기

제가 알려드릴 방식은 공기계에서만 가능합니다. 

녹스, 미뮤같은 에뮬레이터에서는 불가능합니다. 

 

 

 

 

플레이스토어에서 'Ftp 서버'라는 앱을 설치해 주세요.

 

 

 

 

앱을 실행시키고 허용을 눌러주세요

 

 

 

 

설정에 들어가셔서

 

 

 

 

익명사용자 채크 해제 해주세요

 

 

 

 

수동포트말고 '포트'에 들어가셔서 포트번호를 5000으로 해주세요.

(포트번호 5000을 이미 사용하고 있다면 다른 적당한 포트번호로 설정해주세요)

 

 

 

 

빨간 전원버튼을 누르면 이렇게 화면이 나옵니다.

 

 

 

 

빨간 밑줄친 부분을 잘 적어두세요.

핸드폰마다 당연히 다르니깐 당황하지 마세요~

핸드폰의 ip주소입니다.

 

 

 

 

인터넷창을 키고 방금 적어둔 ip주소를 넣어보세요

 

 

 

 

사용자 이름과 비밀번호는 francis 입니다.

나중에 id와 비밀번호는 변경해 주세요

 

 

 

 

이런 창이 뜨면 성공입니다. 

이제 핸드폰은 ftp 서버가 되엇죠.

 

 


2. 파일질라 (FileZilla) 설치

구글에 파일질라를 검색하셔서 무료판 깔아주시면됩니다. 

까는거는 어렵지 않으니깐 패스~ 

 

 

 

 

파일질라를 실행시키면 이런창이 나옵니다. 

호스트에 위에서 적어둔 ip주소중 ':5000'만 빼고 입력해주세요.

사용자명은 francis

비밀번호는 francis

포트는 5000

이렇게 입력하신다음 빠른연결을 누르시면 됩니다. 

 

 

 

 

이렇게 오른쪽에 폴더가 뜨면 성공입니다. 

연결이 안되시는 분들은 공기계랑 컴퓨터랑 같은 공유기에 접속해 있는지 확인해주세요.

 

 

 

 


3. 비쥬얼 스튜디오 코드 설치 (VSC)

코딩하기 편하게 해주는 비쥬얼 스튜디오 코드를 설치해 줍니다. 

구글에 비쥬얼 스튜디오 코드라 검색하셔서 프로그램을 깔아주세요. 

 

 

 

 

비쥬얼 스튜디오 코드를 실행해 줍니다. 

 

맨 왼족 세로바에 사각형 아이콘을 클릭하시면 에드온을 깔 수 있습니다. 

 

위 사진에 나오는 3개의 에드온을 설치해주세요. 

 

 

 


4. 코드 파일 관리 프로그램 만들기

manage.js 라는 파일을 새로 만들어 주시고 다음과 같이 코드를 넣어줍니다. 

 

manage.js는 다른 코딩파일들을 관리하는 프로그램입니다. 

 

리로드(컴파일), 코드 파일 목록보기, 리로드(컴파일)할 파일 정하기 등의 기능을 넣어줄 겁니다. 

 

 

 

 

관리 프로그램은 봇의 주인만 사용해야합니다.

 

이를 위한 여러가지 방법 중 가장 쉬운 방법이 사용자의 이름을 이용하는 겁니다. 

 

sender(메세지를 보내는 사람의 카톡이름)이 "준현크루"와 == (같다면) && (그리고) msg == "리로드" 일때 다음 코드를 실행한다. 

 

여기서 "준현크루"부분에 봇 주인, 또는 관리자의 카톡이름을 넣어주시면 됩니다.

 

(주의할점 : 여기서 카톡이름은 봇이 깔린 공기계 카톡에서 보이는 이름을 기준으로 한다.)

 

 

 

 

 

새로운 명령어들 설명
Api.off(스크립트이름) : 스크립트이름의 작동을 중지한다. 
Api.reload(스크립트이름) : 스크립트이름을 리로드(컴파일)한다.
Api.on(스크립트이름) : 스크립트이름을 작동시킨다.
Api.getScriptNames() : 스크립트 목록을 알려준다.

사진의 25번째 줄을 보시면 msg.indexOf("파일변경") !== -1이라는 코드가 있습니다. 

 

msg에 "파일변경"이라는 문구가 있는지 알려주는 기능을 합니다.

 

indexOf는 원래는 찾으려는 문구의 위치를 알려주는 기능을 합니다. 

 

예를들어 "가나다라"라는 문자열이 있다면, 가나다라.indexOf("나") 는 1이라는 값을 가지게 되는 것이죠. 

 

그런데 가나다라.indexOf("마")는 어떤 값을 가지게 될까요? 가나다라에는 마가 없으니깐 -1이란 값을 가지게 됩니다. 

 

이걸 이용해서 indexOf의 결과값이 !== (==앞에 !가 있으면 not이라는 뜻임) -1이 아니면 해당 문자열안에 찾으려는 문자열이 있다는걸 알 수 있습니다. 

 

 

 

 

코드를 저장하고 manage.js를 공기계에 보내줍니다.

 

보통 메신져봇이 스크립트코드파일을 저장하는 위치는 내부저장소/kakaobot입니다. 

 

(주의!) 메신져봇R에서는 코드 저장 방식과 위치가 바뀌었습니다.

내부저장소/카톡봇/Bots/스크립트파일명 에 스크립트코드파일이 들어가 있으며, 메신저봇처럼 단순히 js파일을 추가해서는 안됩니다.

먼저 메신저봇R 앱에서 manage.js라는 파일을 생성을 해야지 위에서 소개한 방법을 사용할 수 있습니다.

 

 

 

 

manage.js를 보낸후에는 수동으로 컴파일을 해줍니다. 그리고 manage.js의 톱니바퀴모양 아이콘(설정창)을 클릭해줍니다.

 

 

 

 

설정창이 나오는데, 런타임 에러시 자동종료는 체크해제해주고

Api.off()무시는 체크해줍니다.

 

 

 

 

test.js는 런타임에러시 자동종료만 체크해제를 해줍니다.

(Api.off는 건들지 않음)

 

모든 설정은 끝났습니다. 영상 후반부를 보시면 어떤식으로 이용하는지 잘 나와있으니 참조하시길...

 

 


const scriptName = "manage.js";

function response(
  room,
  msg,
  sender,
  isGroupChat,
  replier,
  ImageDB,
  packageName,
  threadId
) {
  //이 코드로 저장과 리로드 기능을 하게 할거임

  //리로드
  if (sender == "옴블" && msg == "리로드") {
    try {
      Api.off(operationJS);   
      if (Api.reload(operationJS) == true) {
        Api.on(operationJS);
        replier.reply("리로드 성공");
      } else {
        replier.reply("리로드 실패");
      }
    } catch (error) {
      replier.reply(error);
    }
  }

  //js파일 목록 (동기화)
  if (sender == "옴블" && msg == "동기화") {
    replier.reply(Api.getScriptNames());
  }

  //리로드할 파일 정하기
  if (sender == "옴블" && msg.indexOf("파일변경") !== -1) {
    operationJS = msg.split(" ")[1];
    replier.reply(operationJS + "로 변경완료");
  }
}

 

+ Recent posts