나는 이렇게 논다 45

슬랙 봇으로 '채널 초대' 기능 구현하기

앞서 우리는 슬랙 봇에서 사용자가 특정 멤버를 여러 채널에 초대할 수 있도록 모달을 띄우는 기능을 구현했습니다.  슬랙 봇으로 '채널 초대' 모달 띄우기이전 글에서 /관리자 명령어를 통해 관리자만 접근할 수 있는 메뉴를 만드는 방법에 대해 설명했었습니다. 2024.08.29 - [나는 이렇게 논다/글또 슬랙 봇 개발기] - 슬랙 봇으로 나만 보이는 '관리자daco2020.tistory.com  이번에는 '채널 초대'를 마무리 짓기 위해, 사용자가 모달에서 제출한 정보를 바탕으로 실제로 채널 초대를 수행하는 방법을 설명하겠습니다.  채널 초대 뷰 핸들링채널 초대를 처리하는 뷰 이벤트 함수는 handle_invite_channel_view로 지었습니다. 뷰 모달에서 제출된 데이터를 받아서 처리하죠. 이 함수..

슬랙 봇으로 '채널 초대' 모달 띄우기

이전 글에서 /관리자 명령어를 통해 관리자만 접근할 수 있는 메뉴를 만드는 방법에 대해 설명했었습니다.  슬랙 봇으로 나만 보이는 '관리자' 메뉴 만들기Slack 봇을 개발할 때, 관리자만 사용할 수 있는 기능이 필요한 경우가 종종 있습니다. 예를 들어, 데이터 동기화나 특정 채널에 멤버를 초대하는 작업 등이죠. 이번 글에서는 /관리자 명령어를daco2020.tistory.com 이번에는 해당 메뉴에서 '채널 초대' 버튼을 눌렀을 때 실행되는 invite_channel 액션을 처리하고, 사용자가 멤버를 초대할 수 있는 모달을 띄우는 방법을 알아보겠습니다.  액션 이벤트 핸들링먼저, invite_channel 액션이 발생했을 때 이를 처리할 핸들러 함수를 작성해줘야 합니다. `invite_channel`은..

슬랙 봇으로 나만 보이는 '관리자' 메뉴 만들기

Slack 봇을 개발할 때, 관리자만 사용할 수 있는 기능이 필요한 경우가 종종 있습니다. 예를 들어, 데이터 동기화나 특정 채널에 멤버를 초대하는 작업 등이죠. 이번 글에서는 /관리자 명령어를 통해 두 개의 버튼을 제공하여, 관리자에게 필요한 메뉴를 호출할 수 있도록 해보겠습니다. 사용한 프레임워크는 Slack Bolt 입니다.   핸들러 함수 정의먼저, 슬랙에서 관리자 명령어를 처리하는 admin_command 함수를 정의해 보겠습니다. 이 함수는 사용자가 /관리자 명령어를 입력했을 때 호출됩니다. 참고로, 명령어는 사전에 slack api 웹사이트에서 Slash Commands 를 설정해주셔야 합니다.async def admin_command( ack: AsyncAck, body: Com..

Slack Bolt에서 view Dict를 View 객체로 변경해보자

Slack 앱을 개발하면서, 모달을 띄우는 view dict 대신 View 객체를 사용하도록 리팩토링을 진행했습니다. 사실 저는 얼마전까지만 해도 slack sdk 가 View 객체를 제공하는지 모르고 있었습니다. 그래서 매번 view 를 dict 로 작성했었는데요. 이번 글에서는 view Dict 를 View 객체로 바꾸는 과정을 공유하고, View 객체를 사용함으로써 얻은 이점에 대해 이야기하려고 합니다.   Dict 를 사용한 기존 코드처음 Slack 앱을 개발할 때는, Slack의 모달이나 메시지 레이아웃을 정의할 때 주로 딕셔너리(dict)를 사용했습니다. 예를 들어, 유저의 예치금 상태를 보여주는 모달을 열 때 다음과 같이 작성했습니다.await client.views_open( trig..

Slack Block Kit 주요 블록 유형별 차이점 정리

Slack Block Kit에서 각 블록은 고유의 역할을 가지고 있는데요. 이를 구성하는 요소들도 블록마다 다르게 사용되다보니 헷갈리는 경우가 많습니다. 이번 글에서는 Input, Actions, Section 블록을 중심으로, 각 블록이 사용하는 요소들의 차이점과 쓰임새를 정리해보겠습니다.  1. Input 블록특징단일 요소 사용사용자로부터 데이터를 입력받기 위한 목적구성 요소element: 단일 상호작용 요소를 포함합니다. 주로 텍스트 입력, 선택 메뉴, 날짜 선택기 등을 사용합니다.예시{ "type": "input", "element": { "type": "plain_text_input", "action_id": "name_input" }, "label..

개발자 글쓰기 커뮤니티는 '슬랙 봇'을 어떻게 사용하고 있을까?

글 쓰는 또라이가 세상을 바꾼다 글또(글 쓰는 또라이가 세상을 바꾼다)라고 하는 개발자 글쓰기 커뮤니티가 있습니다. 현재 진행 중인 글또 9기는 454명이 참여 중이고, 전체 일정의 중반을 넘어서고 있죠. 저는 글또를 7기부터 참여하고 있고, 현재 9기까지 약 2년에 가까운 시간 동안 함께하고 있습니다. 그리고 8기 때부터는 운영진으로 참여하며 커뮤니티에 직접적으로 기여하고 있는데요. 저는 커뮤니티 내 '또봇'이라고 부르는 '슬랙 봇'을 개발하여 운영하고 있습니다. 글또는 한 기수가 5~6개월 동안 진행되며, 멤버들은 2주에 한 번씩 글을 슬랙에 공유하는 방식으로 소통합니다. 이 과정에서 서로의 글에 피드백을 주고받고, 가끔은 멤버들 간 커피챗을 통해 지식이나 경험을 나누기도 합니다. 저는 여기에 더해 ..

Supabase로 SvelteKit에 GitHub 로그인을 구현해보자

SvelteKit에서 GitHub로그인을 어떻게 구현할 수 있을까요? 이번 글에서는 SvelteKit에서 Supabase를 이용해 간단히 Github로그인을 구현해 보도록 하겠습니다. *SvelteKit: Svelte를 기반으로 한 풀스택 웹 프레임워크 Supabase 란? Supabase 는 Firebase의 대안으로 떠오르는 오픈소스 백엔드 서비스입니다. Supabase의 주요 기능으로는 PostgreSQL 기반의 데이터베이스, 소셜 인증 기능, 실시간 구독과 파일을 저장할 수 있는 스토리지 등이 있습니다. 저는 Supabase 의 소셜 인증 기능을 사용해 Github 로그인으로 구현해 보겠습니다. Supabase 프로젝트 생성 먼저 Supabase 홈페이지에 접속하여 프로젝트를 생성해 줍니다. 프로..

003. Supabase로 이미지 저장

학습 목표 Supabase Storage 를 이용해 이미지를 저장할 수 있는가? 저장한 데이터들을 다시 불러올 수 있는가? 측정요소 Supabase Storage 에 이미지를 저장하면 성공이다. ✅ 저장 후 공개 URL 을 받아와 DB에 저장하면 성공이다. ✅ 레퍼런스 Storage Quickstart supabase storage 사진 올리기 만들기 feat: 이미지 storage 저장로직 구현 배우고 느낀 것 이미지를 저장하고 URL을 생성하는 것을 처음 구현해보았는데 생각한대로 동작하니 재밌었다. bind:value와 bind:this라는 svelte 바인딩 명령에 대해서 알게되었다. HTML의 요소는 사용자가 파일을 선택할 수 있게 하는 DOM 요소이기 때문에 Svelte에서 bind:this를 ..

002. Supabase로 데이터 저장 및 페이지 이동

학습 목표 데이터를 Supabase로 저장할 수 있을까? 자장 후 다시 메인 페이지로 돌아갈 수 있을까? 측정요소 폼 데이터가 Supabase에 저장되면 성공이다. 저장 후 메인 페이지로 이동하면 성공이다. 레퍼런스 https://supabase.com/docs/reference/javascript/insert https://kit.svelte.dev/docs/modules#$app-navigation-goto 만들기 https://github.com/Daco2020/monthly-makers/commit/4b7791fc57b7011e128782b50e29270c3107a2d5 배우고 느낀 것 데이터 전송이 너무 빠르다.. 일부러 로딩 시간을 주면 프로젝트 등록하는 느낌을 유저에게 줄 수 있을 듯 등록 ..

001. Supabase 연동 및 Github 로그인

학습 목표 - 월간 메이커스를 수파베이스와 연동할 수 있을까 - 깃헙 로그인을 구현할 수 있을까? 측정요소 - 스벨트킷에 수파베이스를 연동하여 데이터를 주고받는데 까지 동작하면 성공이다. - 깃헙 로그인, 로그아웃을 할 수 있다면 성공이다. 레퍼런스 - https://supabase.com/docs/guides/getting-started/quickstarts/sveltekit - https://youtu.be/1tsUB58KX2s 만들기 - https://github.com/Daco2020/monthly-makers/commit/a193f48e51dd24bf3912f49133a799daba82bbcb 학습한 것 - supabase 연동과 로그인 자체는 어렵지 않았다. (카카오 로그인도 있더라) - 깃헙..