티스토리 뷰

공부

Swift로 Slackbot 만들기

Zedd0202 2019. 1. 5. 00:25
반응형


안녕하세요 :) Zedd입니다. 

평화롭던 슬랙에


즉봇 등장

즉을 외치면 이때까지 즉 몇번했는지 세어주는 앱

그래서 저는 느꼈습니다.

"아 이거다"

이걸로 개재밌게 놀 수 있겠구나 싶었죠.



재밌게 논 결과물 

이거 하기까지 진짜 엄청난 삽질이 있었음...


하지만...찾아보니 전부 막 JS로 짜서..뭐 헤로쿠에 돌리고...뭐 그런 귀찮을 일을 해야하더라구요.

그리고 일단 JS로 짜야된다는게 상당히 맘에 안들었음. 아 물론 파이썬이나 다른 언어들로도 짤 수 있습니다. 

아무튼 Swift로 짜는건 거의 없음zzz

<얼.죽.스> 얼어 죽어도 스위프트 협회원으로서...가만히 있을 수가 없음 

즉!!!! 나는 Swift로 짜겠다!!!!!!!!!ㅇㅋ?


아 그리고 읽기전에 가장 중요한점.

저는 deploy까진 안하구요. local에서만 돌립니다.

즉!!!! 이 봇이 반응을 하려면 내가 백그라운드에서 계속 돌리고 있어야 한다는 말임 ㅇㅇ



엥...그럼..왜..만들어요? 

즉, 내맘이다.


즉이 많아보이는건 즉봇의 영향임

튼 시작해보도록 할게요. deploy도 어렵지 않을 겁니다. 근데 제가 너무 쓰잘데기 없는 걸 만들어서 굳이 deploy하고싶지 않음. 

개빡친다 > 워 워 진정하세요

는...너무 허접하니까요..

근데 진짜 허접한데, 제가 이거 만든다고 엄청!!!나게 삽질을 했어요. 그래서 삽질 과정도 공유하려고 해요 XD


처음엔 당연히..Command line tool로 만들어야 한다고 당연하게도(?) 생각했었음. 

왜냐 

Swift로 Slackbot만드는 법 치면 바로 나오는 블로그에서..main.swift를 고치길래 아 command line tool만들어서 하면 되겠구나 싶었죠.

다만, command line tool에 pod을 추가해본적이 없어서..일단 어케어케 추가했습니다. 

좀 뭔가 하면서도 엄청난 혼종같은 느낌을 받았지만 뭐 잘 되길래...

그리고 코드를 짜고( 코드는..삽질이 많아서, 최종 코드만 이따가 공유할게요)

아무튼 빌드는 잘 되는데 빌드 후 바로 



image not found떠서 안됨...

클린하고 뭐 해봐도 끝까지 image not found나와서 일단 이방법은 포기. 저게 pod문제라고 하더라구요?

끔찍한 혼종의 결과임을 빠르게 수용하고 다음 방법으로 넘어감.


2. Swift로 Slackbot만드는 법 치면 바로 나오는 블로그에서 하는 package를 사용하는 방법.

터미널에


mkdir 프로젝트이름 && cd 프로젝트이름

swift package init --type executable


를 치고 


import PackageDescription


let package = Package(

    name: "zeddios",

    dependencies: [

        // Dependencies declare other packages that this package depends on.

        // .package(url: /* package url */, from: "1.0.0"),

        .package(url: "https://github.com/SlackKit/SlackKit.git", .upToNextMinor(from: "4.1.0"))

    ], ....



이렇게 해주고 



swift package generate-xcodeproj


를 해주면 dependency가 추가됩니다. 이런방법으로 해보는건 처음이에요! 

아무튼 이거 하고나서 코드 쓰고 빌드하면 된다는데...죽어도 안됨

SlackKit을 방금 설치한거 아닌가요...? 근데 no such module 에러가 계속 남...

그래서 또 다른 방법을 하기 시작.


3. Mac app을 만듬...역시나 안됨.


4. 근데 진짜 iOS앱은 진짜 아닌거 같은데...시뮬레이터가 돌아가는데....안될거라고 생각했으나 

방법이 없어서 일단 시도해봄.

네...됩니다...

그럼 본격적으로 시작해볼게요!!!

제가 위에서 했던 방법들도 될 수도 있어요! 제가 뭘 잘몰라서 안됐던 걸 수도 있고..zzzz 

아무튼 저는 Single View App으로 되었으니..저는 일단 이방법으로 소개해볼게요.



Swift로 Slackbot 만들기 (Building Slack Bots In Swift)



1. Single View App 하나를 만들어줍니다.

2. pod을 만들어주고, Podfile에 


pod 'SlackKit'


을 추가해줍니다. 그리고 pod install ㄱㄱ


3. https://api.slack.com/apps에 가줍니다.


4. Create New App을 눌러줍니다.



오른쪽 위에 ㅇㅇ


5. 앱 이름과 workspace를 지정해줍니다. 



아..아마 저기 사이트 들어가면 일단 로그인 하라고 뜰텐데, 로그인 한 걸로 workspace가 뜨는 것 같습니다.


암튼 그리고 create App누르면



이런 화면을 볼 수 있는데요, 설정을 여러가지 해야합니다. 


6. permission


자..Permission을 눌러주시면


이런 화면이 뜨는데, 우리는 저 install App to Workspace를 해야합니다. 근데 지금은 활성화가 안되어있죠? 


스크롤을 하면 Scopes섹션이 나오는데요, 여기서 하나 이상의 permission을 선택해야합니다. 




자..permission을 선택하는 창을 가보면



이런게 나오는데, admin이라고 적힌거는 일단 확실하진 않은데,

workspace의 admin이 해당 앱 설치를 허용(?)해줘야 설치를 할 수 있습니다.

저는 저 workspace의 admin이 아니라서...일반적인걸 해볼게요. 


제가 하고싶은게 뭐였죠? 

누군가 채널에 개빡친다 입력 > 워 워 진정하세요 



그러기 위해서는 public 채널에 접근이 가능해야합니다. Access user's public channels를 선택해줍니다. 

왜냐? 사람들이 말하는거를 가져와야하니까 ㅇㅇ read권한이라고 보시면 됩니다. 


이렇게 선택이 됐죠? 

하나 더 선택을 해야하는데 자 만약에 "개빡친다"가 입력이 됐다고 치면,

봇이 "워 워 진정하세요" 를 입력해야하죠?

그래서 write권한도 필요한데요,


저걸 찾아서 추가해줍니다.



자 이제 끝났습니다!! save changes를 누르고!!!!!!! 

이제 위로 가보면


이게 이제 활성화가 된 것을 볼 수 있습니다.

눌러줍니다.


Post to 다음에는 채널 이름이 옵니다. 

어떤 채널의 메세지를 읽고 쓸지 정해주는? 작업이라고 생각해주시면 될 것 같아요.

Authorize를 눌러줍니다. 


이제 내가 방금 선택한 채널에 가보면



이렇게 뜹니다. 

잘하신거에요.



왼쪽의 Bot Users에 들어가서 위 그림처럼 설절해줍니다.


Add Bot User를 누르면



위에 노란색으로 노티가 뜰텐데, click here라는 부분있죠? 거길 클릭해서 들어가줍니다.

Default username에는 영어만 되네요..

암튼 저기 click here를 눌러주면

역시나 Authorize해줍니다. 


자..이제 채널에 들어가서

/invite @Display Name을 치면 됩니다. 

그럼 제 봇이 초대가 되는데요, 제 봇이 지금 돌고 있는 상태인데, 잘 되나 확인해봤어요.

잘되네요!!!! 

그럼 코드를 보도록 하겠습니다. 

그 전에!!! 



왼쪽의 OAuth & Permissions에 들어가면 이제 Token을 볼 수 있는데요, 2개가 보일거에여ㅛ!

저희는 아래에 있는 Bot User OAuth Access Token만 필요합니다. Copy해서 저장해두세요.


그럼 이제 우리의 프로젝트로 다시 돌아옵니다. 



자, 위 코드를 넣어주고 빌드를 합니다. 위 토큰 부분에 Bot User OAuth Access Token를 넣어주세요. 

시뮬레이터가 뜨겠죠???

ㅇㅇ괜찮습니다.

돌리고 slack에 가서 말 하면? 

짜잔

잘 되는 것을 볼 수 있습니다.

헉 이제보니 고독한 늑대라는게 조금;;;;또라이 같아 보일 수 있는데 

또라이같아 보이는 걸 노림 && 허세 && 간지를 노린 닉네임이니 또라이 같은게 맞습니다.


자 끝입니다!! 여기서 쪼끔만 더 하면 deploy까지 할 수 있는데, 귀찮음 ㅋ.ㅋ

암튼 너무 삽질해서 해냈을 때 진짜ㅣ 뿌듯했던...슬랙 봇 만들기...

자신만의 로직을 추가해서 세상에서 가장 쓸데없는 봇을 만들어보는 건 어떨까요? :)

도움이 되었길 바랍니다 XD



반응형

'공부' 카테고리의 다른 글

ABI stability  (4) 2019.01.07
App Thinning. 그리고 Bitcode  (11) 2019.01.06
Boot Camp로 Windows 10 설치시 WIFI문제 해결 + Boot Camp삭제 방법  (13) 2018.11.11
Chisel사용해보기  (0) 2018.10.23
App-architecture - Networking  (0) 2018.09.17