변수명 추천 슬랙 봇을 만드는 내용입니다.
만들게 된 계기
시작은 하나의 링크로 시작됩니다.
https://tech.kakaopay.com/post/variable-name-bot-haero-sery-bread/
변수명..변수명이 떠오르지 않아! - "너의 변수명은." 챗봇 개발 일지 | 카카오페이 기술 블로그
카카오페이 개발자 페스티벌 - 카페톤 1등 수상작, "변수명 추천 봇"이 만들어진 과정을 소개합니다!
tech.kakaopay.com
카카오 개발 블로그였는데 변수명 추천 봇을 만드는 내용이었습니다.
그냥 좋은 아이디어다~ 하고 보고 있었는데 만들어달라고 하더라구요...
그래서 그냥 만들어보기로 했습니다!(?)
저 내용을 클론코딩? 까지는 아니지만 많이 많이 참고했습니다!
인사하는 slack-bot
일단 슬랙봇을 만드는 거니까, 슬랙봇을 간단하게 만들어 놓고 시작하겠습니다.
구글링을 해보니 대부분 python으로 만드시는 거 같기에, 저도 python으로 만들었습니다.
Slack API: Applications | Slack
Your Apps Don't see an app you're looking for? Sign in to another workspace.
api.slack.com
아래에 들어가서 App을 생성합니다.
오른쪽 상단에 "Create New App" 누른 뒤 저는 "From scratch"를 선택했습니다.

위에 거는 설정파일 토대로 만들어주는 거고, 밑에 거는 처음부터 설정해서 만드는 거 같습니다.
그다음 "OAuth & Permissions" 의 "Scopes"란 항목에서 다음과 같은 권한을 추가해 줍니다.

이 봇이 해당 슬랙 채널 안에서 사용할 수 있는 권한을 추가해 주는 겁니다.
그리고 webhook으로 만들어달라는 요청도 있어서
"Incoming Webhooks" 설정을 활성화시키고 사용할 채널을 추가했습니다.


이 정도면 슬랙 설정은 거의 끝났다고 봐도 무방합니다.
나중에 command정도만 등록하면 되는 거죠.
코드 작성
코드 작성에 앞서 디렉터리 구조는 별거 없지만 올려봅니다.

varbot.py
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/hello", methods=["POST"])
def hello():
user_input = request.form.get('text')
return jsonify({
"response_type": "in_channel",
"text": "👋 안녕하세요! 바봇이에요!"
})
if __name__ == "__main__":
app.run(port=8090)
파이썬이 거의 처음인데 보통 간단한 서버는 flask를 사용한다고 하더라구요?
저렇게만 작성했는데 실행시키니 8090 포트로 잘 올라갔습니다.
그리고 "Slash Commands" 설정에서 커멘드도 등록해 줍니다.

그리고 테스트를 해보면...!
안됩니다!
ㅠㅠ
왜 안 되냐!
바로 로컬에만 올려놓은 상태이기 때문입니다.
슬랙이 api에 접근하려면 방화벽을 뚫던, 배포를 하던 작업을 해야 했던 거죠.
개인서버가 없는 저는 테스트할 수 있는 방법을 찾아봅니다. (with. GPT)
그랬더니 "ngrok"라는 걸 알려주더라고요.
무료로 호스트를 만들어 제 로컬서버로 forwarding 해주는 아주 고마운 친구였습니다.
제 로컬서버로 포워딩되는 도메인을 받고, 그 도메인을 command에 새로 입력했더니

원하는 결과를 얻을 수 있었습니다.
바봇 0편 - https://sheep-h.tistory.com/22
바봇 1편(번역기 ver) - https://sheep-h.tistory.com/23
바봇 2편(AI ver) - https://sheep-h.tistory.com/24
'study' 카테고리의 다른 글
| [slack-bot] 바봇(var bot) - 2. AI API.ver (2) | 2025.06.30 |
|---|---|
| [slack-bot] 바봇(var bot) - 1. 번역 API.ver (3) | 2025.06.30 |
| Docker 명령어 참고 (0) | 2025.02.11 |
| [react] warning: Received NaN for the `value` attribute. If this is expected, cast the value to a string. - 경고 수정 (0) | 2022.08.24 |
| [react] Warning: Each child in a list should have a unique "key" prop. - 경고 수정 (0) | 2022.08.24 |