brunch

코딩 까막눈의 디스코드 챗봇 만들기

이모티콘 개수 세기 싫어서 시작한 복붙코딩 이야기

by LibaD

<크립토 도토리> 매거진에 2년 4개월 만에 돌아와 글을 쓴다. 올해 초 크립토판에 돌아온 소회를 적어보려 했지만, 글쓰기란 역시 몇 년이고 미뤄질 수 있기 때문에, 지난 주말에 있었던 일에 대해 적어보려 한다.


세간의 화재인 다오(DAO, Decentralized Autonomous Organization)가 무엇이든(참고 유튜브, 쉽게 쓰인 영어 글, 최근 기사) 간에, 많은 다오들이 디스코드에 둥지를 틀고 있다. (다오도 디스코드도 직접 그 일부가 되어보라는 말 밖에는 설명할 자신이 없기 때문에, 2022년의 중년들에게 디스코드에 가서 커뮤니티 만들어보라고 잔소리하고 계신 모 대학 학장님의 웹3 설명 영상으로 대신한다. 지금까지 본 웹3 설명중 최고다!) 약간의 디스코드 얘기를 해 보자!




사건의 시작

이번 달 입사한 회사에서 '커뮤니티 만들기(Community Building)' 라고 자신 있게 명함 판 사람 치고 '그래서 무슨 일을 해야 하는 거지?'라고 거의 항상 고민하고 있습니다. 마침 옆자리 동료가 자기 커뮤니티에 '뱃지 주기'를 시전하고 있어 도와주기로 했습니다. 커뮤니티 마케팅 이벤트에 참여한 사람들이 디스코드에 각자의 작품을 올리면, 참여해준 모두에게 뱃지가 주어집니다! 그리고 그 작품들에 대한 인기투표를 해서, 가장 많이 특정 리액션 이모지(Reaction Emoji)를 받은 사람이 1등을 합니다. 뱃지는 친구가 줄테니, 저는 1등을 찾아내면 되는것이었습니다.


Screen Shot 2022-03-31 at 2.18.23 PM.png 이렇게 글 아래에 그 글에 대한 반응을 스티커처럼 붙이는 게 리액션 이모지입니다


업무는 간단합니다. 백여 개의 게시물들을 보고 제일 스티커 많이 붙은 애 찾아내기!

..를 10분쯤 하다 보니, 이건 인간이 할 일이 아니라는 생각이 들었습니다. 디스코드의 강점 중 하나는 누구나 챗봇을 개발해 게시할 수 있고, 또 누구나 이 챗봇을 자기네 서버로 불러와 쓸 수 있다는 것입니다. (구글에 디스코드 챗봇 _ 필요한 기능_ 넣으면 여러 개 나옵니다) 그렇게 이모지 통계 내주는 챗봇을 찾았습니다!


하지만 역시 일이 이렇게 쉽게 풀릴 리가 없죠. 제가 원하는 기능, '특정 이모지가 제일 많이 붙은 글 찾기'는 없었습니다. 하지만 역시 일이 이렇게 맥없이 끝날 순 없겠죠. 깃헙에서 발견했습니다.


코드는 찾았으니 이걸로 봇을 만들기만 하면 되겠죠! '코드를 도커에 띄우면 된다' 고 하는데 그게 무슨 말인지는 잘 모릅니다. 어깨너머로 본 대로 구름 IDE에서 컨테이너(그게 무엇이든 간에)를 만들어 저 코드를 복붙 합니다. 마치 미라에 주술 걸면 벌떡 일어나는 것처럼, 이제 봇이 키이익 움직여주기만 하면 됩니다!



진짜 사건의 시작

하지만 그게 될 리 없죠! 복붙과 재생이 그렇게 어려운 주술은 아닐 텐데, 시도 1일 차는 디스코드 봇 만드는 방법 연구하다 시간이 다 갔습니다. 이렇게 친절한 가이드가 있는데 어떻게 그렇게까지 헤맬 수 있는지 다시 보니 미스터리네요.

언젠가 참나무가 되면 도토리 시절을 기억하지 못하겠죠?


뭘 모르는지도 모르기 때문에 진도는 무척 더뎠습니다. 아마 경제학을 멀리하던 친구가 '이자율'이라는 말만 들어도 손사래를 치는 것과 비슷했을까요? (TMI: 30분 컷 경제학 원론 영상을 추천합니다! 세 번째 볼 때쯤 이해가 되더군요. 참고로 저는 경영학사입니다) 낫 놓고 ㄱ자(개발) 혹은 ㅋ자(코딩)만 나오면 손사래를 치던 제가 컴퓨터와 1:1로 마주 앉아 대화를 나누려니 무척 어색하고 자리를 떠나고 싶고 그랬습니다.

그렇게 도전 1일 차가 끝났습니다.


Screen Shot 2022-03-31 at 2.56.12 PM.png 불러도 대답 없는 그 명령어 !stats


2일 차는 토요일이었고, 늘어지게 늦잠을 자고 일어나 다시 노트북을 마주 앉았습니다. 깃헙에서 찾았던 코드는 3년 전 글이었는데, 요즘 디코에 맞게 업데이트했다며 포크한 글이 3개월 전 코드라 그걸로 다시 시도해봤습니다.

그런다고 갑자기 될 리가 없겠죠? 이거 안된다며 도와달라고 주변 개발자를 괴롭혔습니다. 그랬더니 코드를 업데이트해줬습니다. (옛 말에 '친구를 가까이, 개발자 친구를 더 가까이 하라' 고 하지요)

그 코드가 주어진 문제 (이모지 제일 많이 붙은 글 찾아오기)를 잘 해결하는지 자신의 디스코드에서 시험 운행까지 해줬습니다! 잘 작동한다는군요!



틀린 그림 찾기

하지만 똑같은 코드를 복붙 해서 제가 주술을 외우면 작동을 안 합니다. 이제 놀랍지도 않군요!

아무튼 그 친구에게 고마움을 표하기 위해 밥을 사겠다고 말합니다. 그랬더니 띵동 링크가 날아옵니다. 와 역시 요즘 젊은 사람들은 다르군요! 밥 두 번 먹기 위해 $SIGJ 토큰 2개 사고 다시 이해할 수 없는 화면으로 돌아옵니다.

Screen Shot 2022-03-31 at 3.39.56 PM.png 흰 것은 배경색이요 그 외는 변경사항이라


계속 코드를 바라보고 있으면 마치 내가 알아들어서 그러고 있는 것 같으니까 계속 보고 있었습니다. (마치 미술관에서의 제 모습과 같군요) 위 흰 배경 그림과 아래 검은 그림 배경 그림을 대조해보면


Screen Shot 2022-03-31 at 3.17.15 PM.png 넌 내게 무슨 말이 하고 싶은 거니?


아하! YES, we are in. 이라는 구절이 추가된 덕분에 '오 이게 주술이 걸리긴 걸렸는데 어디선가 막혔구나'를 알 수 있었습니다. (흰 배경 그림에 초록으로 칠해져 있는 걸 보니 $SIGJ 가 추가해놓은 모양입니다) 이렇게 코드 중간중간 확인장치를 넣어서 어디까지는 작동을 하고 어디서부터 문제인지를 볼 수 있으니 좋군요! 하나 배워갑니다.


주변 개발자들에게 주워들은 것은 많습니다. 그 자신감으로 복붙 코딩에 도전했고요. 코딩을 잘한다는 것은 구글링을 잘한다는 것이라길래, 검은 배경 그림의 마지막 문장을 통째로 검색해봤습니다.


Screen Shot 2022-03-31 at 3.52.22 PM.png 이걸 영어라고 할 수가 있나


똑같은 문제에 봉착했던 사람들이 정말 많았습니다. 아무튼 디스코드 권한 문제라는 것 같군요. 첫날 엄청 헤매며 만든 봇을 날려버리고 다시 만들어서 제가 관리자 권한을 가지고 있는(그래야 봇을 서버에 초대할 수 있습니다) 칭DAO에 초대합니다. 다시 처음부터 테스트를 시작합니다.


또 다른 개발자 친구를 붙잡고 징징거렸더니 봇한테 DM도 보내보고 다른 채널에서도 말해보고 다른 명령어도 해보고 하면서 어디서 안되는지를 보라고 하더군요. 그러다가 제가 admin채널에다 봇을 불러놓고 안된다 하고 있었다는 것을 알게 되었습니다. 봇은 어드민이 될 수 없나봐요. 그치만 권한은 다 줬다구



그리고.. 드디어!


Screen Shot 2022-03-31 at 2.55.09 PM.png 감격의 첫 대화ㅠㅜ


애가 왜 같은 말을 두 번씩 하는지는 모르겠지만 반응이 왔다는 것만으로도 감동이었습니다. 이래서 다들 헬로 월드 헬로 월드 하는구나!!

인사를 나눴으니 바로 본론으로 들어갑니다.


Screen Shot 2022-03-31 at 4.11.38 PM.png 개감동

와 제가 짠 코드도 아닌데 작동하니까 짜릿했습니다. 이래서 코딩하는군요?


결국 사람이 눈과 손으로 세는 것보다 3배쯤 더 많은 시간을 들여 해당 프로세스를 자동화했습니다. 이래서 스타트업이 수타트업이 되는군요. 자주 있는/중요한 일이 아니라면 그냥 사람이 하는 게 효율적입니다.


하지만 코딩을 좀 더 배워보고 싶다는 생각은 들었습니다. 글로벌 시대에 영어를 못한다고 큰일이 나진 않지만, 잘하면 큰 일 낼 수 있잖아요? 메타버스 시대에 코드를 쓸 줄은 몰라도 읽을 줄은 알아야지, 까막눈은 너무 답답하네요.



결론

이 글에 담기진 않았지만 개발자 동무들이 제 삽질을 돕느라 우여곡절이 많았습니다. 분명히 바꿨는데 안돼서 막 하소연했는데 Ctrl+S 안 눌러서 그런거였고요^^ 아무튼 감사합니다.


낭만 복붙코더가 되는 그날까지!




디스코드 스크린샷 출처: BanklessDAO, Pilgrim Protocol, TsingDAO

keyword
매거진의 이전글[번역] 이더리움 레이어2 확장판 이해하기