나의 귀욤깜찍한 GoGo Bot

iseolin·2021년 7월 1일
18
post-thumbnail

귀여운 고....


저번주부터, 정확히 목요일 저녁부터 시간이 남았다.
그렇기에 작년에 만들다 말았던 GoGo Bot을 다시 만들기 시작했다.

❗️ 본 게시물은 반말로 이루어져 있습니다. 주의해주세요.

GoGo Bot?

GoGo Bot은 Go언어로 만든 Discord Bot이다.
작년 6월 달 즈음 Go언어를 접하기 시작했고,
새로운 언어가 흥미로워 사실 고가 너무 귀여워서가 제일 크다

너무 사기적인 귀여움 아니냐고...

Golang

2020년 6월, 그러니까 작년 6월에 들은 노마드코더의 쉽고 빠른 Go 시작하기 강의이다.
이 당시에는 여러 언어들을 급! 접하기 시작했던 때라 Go를 배운 것이 나에게 많은 파급력을 미쳤다.

그 중 하나를 말하자면 Go와 다른 언어들의 문법이 꽤나 헷갈렸던 일이다.

Go에서 제일 헷갈리게 했던 요인은 다중 리턴선언문이다.
한 번 Go의 선언문을 살펴보자.

package main

// 서로 다른 타입들을 한 번에 묶어서 선언한다.
var (
    ImString string
    ImBoolean bool
)

func main() {
    // 함수 내에서는 ":="로 선언 및 할당을 간략화하여 할 수 있다.
    num := 1
    // 일반적인 선언
    var age int = 2
    // 바로 값을 할당하면 자료형을 명시하지 않아도 된다.
    var name = "seolin"
}

먼저 var [변수명] [자료형]순으로 선언을 하는 것이
타 언어들의 선언문과 너무 헷갈렸다...

다들 자료형이 변수명 앞에 선언이 되더라고...😂

이 것뿐만이 아니라 앞서 말한 다중 리턴도 꽤나 헷갈렸다.

package main
import "fmt"

func vals() (int, int) {
    return 3, 7
}
func main() {
    a, b := vals()
    fmt.Println(a) // 3
    fmt.Println(b) // 7
    
    // 만약 둘 중 하나의 값만 할당하고 싶다면 _으로 값을 무시한다는 표시를 한다.
    _, c := vals() 
    fmt.Println(c) // 7
}

이렇게 다중 리턴을 할 수 있고, 이에 따른 문법들이 파생되었다.

그렇게 C언어에서 이 함수에서는 age와 name을 리턴하면 되겠구나! 라고 생각해버리는 참사가 발생하였다.😂

아니 왜 안되냐고...!!😭😭😭

그래서 GoGo Bot이 뭔데?

GoGo Bot이라면서 GoGo Bot 이야기는 안 하고
엉뚱쌩뚱한 이야기만 하네!!😡😡

GoGo Bot이라고 제목을 콱! 하고 박아두고선
지금까지 정말 GoGo Bot에 관한 이야기는 1줄, 정말 딱 1줄 나왔다.

이 글은 내 프로그래밍 언어의 방황기 라던지, 내가 Go를 배운 방법 같은 것을 설명하는 글이 아니기에,
이제 정말 GoGo Bot에 대한 이야기를 해보자 한다.

Discord

맨 첫 줄에서 나는 GoGo Bot은 Go언어로 만든 Discord Bot이다.라고 했다.
그렇다면 Discord 가 무엇인지 정도는 알아야하지 않을까?

한 번 정도는 들어봤을 정도로 흔한 Discord, Discord 앱이 폰에 깔려있으면 X덕이라는 말이 있을 정도다.
내가 Discord 를 사용하는 이유는 학교 내의 KakaoTalk 제한 때문이었다.
분명 못 쓰게 한다고 했던 것 같은데 잘 쓰고 있는 건 함정. 작년에는 검사했다고 하더라.

학교 내에서는 KakaoTalk을 쓰지 못하게 한다는 소문과,
이미 학교 커뮤니티가 Discord로 이루어져있기에 Discord를 접하게 되었다.

Discord Bot Study

Discord 내엔 직접 만들어 사용할 수 있는 Bot이 있다.
Bot을 만드는 사람들을 위해 명세서도 있다.

근데 사실 안 써주면 못 만드는 거라...

Discord Developer 사이트에 들어가면 볼 수 있다.
Discord Application Resource 명세서

작년 내 기수에서는 Discord Bot Study가 결성되었다.
Discord Bot을 만들면서 전공 능력을 함양하자는 취지에 의한 스터디였는데,
이 스터디에 내가 들어가있으면서 GoGo Bot을 본격적으로 만들게 되었다.

GSM Discord Bot Study 구경하기

사실 들어가서 구경하지 않는 것을 추천한다.
저 곳은 이미 버려졌어...

열심히 봇을 개발했던 흔적은 남아있다.

Discord Bot Study가 생기기 몇달 전,
나는 사칙연산을 하는 봇을 Python으로 만든 적이 있었다.
지금은 사용하지도 않지만 이 때엔 이 봇마저 신세계였달까? 😉

진짜진짜 GoGo Bot

이제 배경설명은 끝내고 진짜진짜 GoGo Bot에 대해 말해보겠다.
GoGo Bot은 이름에서도 느껴지듯 Go언어로 만들었다.

라이브러리는 discordgo로 만들었는데,
임베드는 discordgo-embed 라는 것을 끌어다가 썼다!

discordgo는 discord bot을 go언어로 만들기 쉽게끔 만들어놓은 라이브러리이고,
discordgo-embed는 discordgo의 임베드를 쉽게 쓸 수 있게 만든 discordgo의 도우미?
그런 역할이다.

귀여운 GoGo 봇은 내가 다니는 고등학교(광주소프트웨어마이스터고등학교)에 종속적인 기능만 있다.
아직은... 그런 거고,
곧 DB를 연동해서 모든 학교 데이터를 끌어오는 것이 목표다!

학교 데이터는 나이스 교육정보 개방 포털에서 제공하는 공개 api를 가져다가 썼다.
현재 급식, 시간표를 지원 중!

그 외에도 GoGo Bot 초대코드(초대코드가 있어야 사용할 수 있다)나 도움말을 지원 중이다.

⬆️ 학교 급식을 알려주는 고고의 모습이다.
너무 귀엽다고 생각한다... 이건 사기야...

만들기 시작한 지 얼마 안되기도 했고, 기능이 별로 없기도 하다.
그리고 버그도 있다.

⬆️ 시간표 데이터는 맞지만... 정렬이 이상하다...🤔🤔

고고의 다른 모습들을 더 보고 싶다면?
고고 깃허브로 놀러오면 고고를 만나볼 수 있다 🥳

사실 이름을 뭘로 할 지 생각이 안나서 GoGo로 짓기는 했는데,
후회는 되지 않는다. 이 덕에 귀요미 Go를 알렸으니까 ㅎㅎ

GoGo Bot을 만들면서

오랜만에 Go를 건드려서 그런지 전에는 대충 훑기만 해서 그런지 쉽지는 않았다.
헤로쿠로 배포를 했는데, 헤로쿠 go 빌드팩이 이상한건지 뭔지 자꾸 go run main.go라는 명령어에서
go command is not found 였나? 아무튼 go 명령어를 찾을 수 없다고 하더라...
아는 사람이 있다면 제발 도와주세요 😭😭

🤔 어떻게 해결했는데??
방법은 엄청 간단하고 단순하다.
헤로쿠에서는 배포 후 처음에 실행될 명령어를 Profile이라는 파일에다가 지정할 수 있는데, 그 실행될 명령어에 go 설치 명령어를 두었다.. ㅎㅎ
사실 이게 정말 좋은 방법인가 싶기도 하고... 결국 빌드에서 시간을 한 30초? 정도 잡아먹게 되었다.

또, 나이스 교육정보 개방 포털에서 데이터를 가져다가 썼다고 했는데,
JS와는 다르게 json을 다 struct로 만들어야 해서 고생 좀 했다.
근데 찾아보니 좋은 사이트가 있더라고..?
JSON-to-Go <- 여기로 가면 json을 Go struct 변환해준다!

노가다 멈춰!

저 사이트를 찾고 나서부터 일이 술술~
헤로쿠를 해결(과연 해결일까??)하고 나서부터 일이 술술~

행복했던 개발...
주말에 자기 전까지 개발하고, 일어나자마자 바로 개발하고
꿈에서마저 코드를 보았다.
꿈에서 내가 짰던 코드들을 리팩토링했다. 요상한 꿈...
하지만 덕분에 일어나자마자 리팩토링을 쫘라락했다. ㅎㅎㅎ

주변인들한테 말하니까 그건 중독이라고 하더라 ㅋㅋㅋㅋ

그래도 너무 재밌었고, 계속 하고 싶은 개발?
정말 즐겼다는 말이 맞는 것 같다.😉

비록 지금은

목요일 저녁부터 주말까지 했다고 일이 몰아쳐서, 할 여유가 없다.

수행평가 폭탄...💣
프로젝트 폭탄...💣
💣...

아직 내 GoGo Bot은 개발 중이고, 적용하고 싶은 것들을 이미 많이 찜해두었다.
여러 좋은 api들이 많기에!

구글 검색 엔진 매우 칭찬해 😏😏

etc...

GoGo Bot은 무리없이 내 실력으로 충분히 할 만한 개인 프로젝트이고,
정말 하고 싶은 프로젝트다.

그래서, 정말 개발을 즐겼다.
다른 프로젝트들도 물론 좋고, 재밌게했지만 이 정도로 재밌다고 느끼지는 않았기에,
과연 내가 개발자로 잘 살 수 있을까? 라는 내 자신의 물음에 잘 대답을 해줄 수 있지 않을까 한다.
나는 개발자로서 잘 살 수 있을 거다! 암 그렇고 말고

여유가 생긴다면, 아니 만들어서라도 개발을 더 할 예정이다.
GoGo Bot에 인증 뱃지를 달 그날까지!

인증 뱃지가 뭔데??

⬆️ 위 사진보면 체크표시가 있는데,
Discord Bot들은 75개 이상의 서버에 들어가게 되면 인증 뱃지를 얻는다.
(MEE6 bot은 짱짱 유명한 봇!)

⬆️ 현재 나의 GoGo Bot
근데 그 때쯤 되면 무료 호스팅으로는..!
난 그래도 기뻐 내 통장을 바치더라도...🤣🤣


Go언어로 Discord Bot을 만드는 글을 올리면 사람들이 많이 볼까?
아니 그 전에 Discord를 하는 사람이 있는 지부터...

profile
"무엇이든지 지금 당장 귀찮게" 라는 모토로 개발하는 FE 개발자입니다.

7개의 댓글

comment-user-thumbnail
2021년 7월 1일

Discord를 쓰면 x덕이라니....

1개의 답글
comment-user-thumbnail
2021년 7월 1일

Gopher는 못참지...

1개의 답글
comment-user-thumbnail
2021년 7월 5일

고등학생의 Go라니..! 대단합니다 응원해요~!

1개의 답글
comment-user-thumbnail
2021년 7월 6일

오오 멋져요 ㅋㅋ! 응원합니다

답글 달기