공식 문서 홈으로표준 블록 카탈로그 & 사전스튜디오 열기

전체 블록 사전 (Catalog)

SnapBot에서 기본 제공하는 6개 카테고리의 표준 블록 세트입니다. 각 블록의 모양(형상), 입력 파라미터, 슬롯 유형 및 실시간 discord.js 변환 규칙을 확인할 수 있습니다.

이벤트

(22개 블록)

봇 시작, 메시지 수신, 슬래시 명령어, 상호작용 등 트리거 시작 블록

hatevent_ready

봇이 준비되었을 때

디스코드 봇이 정상적으로 로그인되고 초기화되었을 때 1회 실행됩니다.

hatevent_message_create

새 메시지가 도착했을 때

서버의 텍스트 채널에 누군가 메시지를 전송했을 때 실행됩니다.

입력 필드: ignoreBots(dropdown)
hatevent_message_update

메시지가 수정되었을 때

사용자가 기존에 전송한 메시지를 수정했을 때 실행됩니다.

hatevent_message_delete

메시지가 삭제되었을 때

채널에서 메시지가 삭제되었을 때 감지하여 실행합니다.

hatevent_interaction_create

슬래시 명령어 /{commandName} 실행 시

사용자가 등록된 슬래시 명령어를 입력하고 실행했을 때 동작합니다.

입력 필드: commandName(text)
hatevent_button_click

버튼 [ID: {customId}] 클릭 시

메시지에 포함된 인터랙티브 버튼이 클릭되었을 때 실행됩니다.

입력 필드: customId(text)
hatevent_select_menu

선택 메뉴 [ID: {customId}] 선택 시

드롭다운 선택 메뉴에서 항목이 선택되었을 때 실행됩니다.

입력 필드: customId(text)
hatevent_modal_submit

모달 팝업 [ID: {customId}] 제출 시

사용자가 모달 입력창에 내용을 작성하고 제출했을 때 실행됩니다.

입력 필드: customId(text)
hatevent_guild_member_add

새 멤버가 서버에 입장했을 때

서버에 새로운 멤버가 참여했을 때 실행됩니다.

hatevent_guild_member_remove

멤버가 서버에서 퇴장했을 때

멤버가 서버를 나가거나 추방되었을 때 실행됩니다.

hatevent_member_update

멤버 정보(닉네임/역할)가 변경되었을 때

서버 멤버의 닉네임이나 역할이 업데이트되었을 때 실행됩니다.

hatevent_guild_ban_add

유저가 서버에서 차단(밴)되었을 때

관리자가 특정 유저를 차단했을 때 감지합니다.

hatevent_guild_ban_remove

유저의 서버 차단(밴)이 해제되었을 때

차단된 유저의 차단이 해제되었을 때 실행됩니다.

hatevent_role_create

새 역할이 생성되었을 때

서버에 새 역할(Role)이 추가되었을 때 실행됩니다.

hatevent_role_delete

역할이 삭제되었을 때

서버에서 기존 역할이 삭제되었을 때 실행됩니다.

hatevent_channel_create

새 채널이 생성되었을 때

서버에 새 텍스트 또는 음성 채널이 생성되었을 때 실행됩니다.

hatevent_channel_delete

채널이 삭제되었을 때

기존 채널이 서버에서 삭제되었을 때 실행됩니다.

hatevent_voice_state_update

음성 채널 상태(입장/퇴장/이동) 변경 시

멤버가 음성 채널에 들어가거나 나갈 때 실행됩니다.

hatevent_thread_create

새 스레드가 생성되었을 때

텍스트 채널에 새 스레드(Thread)가 생성되었을 때 동작합니다.

hatevent_emoji_create

새 커스텀 이모지가 등록되었을 때

서버에 새 이모지가 업로드되었을 때 감지합니다.

hatevent_reaction_add

메시지에 반응(이모지)이 추가되었을 때

어떤 메시지에 사용자가 이모지 리액션을 달았을 때 실행됩니다.

hatevent_typing_start

누군가 채널에서 입력을 시작했을 때

채널에서 사용자가 텍스트를 타이핑하기 시작할 때 실행됩니다.

메시지 & 반응

(14개 블록)

채널 메시지 전송, 답장, 수정, 삭제, 리액션 이모지 반응, 스레드

commandaction_send_message

채널에 메시지 전송 {content}

현재 채널로 텍스트 메시지를 전송합니다.

입력 필드: content(text)
commandaction_reply_message

메시지에 직접 답장하기 {content}

수신된 메시지나 명령어에 인용 답장합니다.

입력 필드: content(text)
commandaction_reply_ephemeral

나에게만 보이는 답장 전송 {content}

명령어를 입력한 당사자에게만 은밀히 보이는 에페메럴 응답을 전송합니다.

입력 필드: content(text)
commandaction_edit_reply

기존 응답 메시지 수정 {content}

이미 보낸 봇의 답장 내용을 새 내용으로 바꿉니다.

입력 필드: content(text)
commandaction_delete_message

현재 메시지 삭제

수신된 메시지를 즉시 삭제합니다.

commandaction_pin_message

현재 메시지를 채널에 고정(Pin)

메시지를 채널 상단 고정 메시지 목록에 추가합니다.

commandaction_unpin_message

현재 메시지 고정 해제(Unpin)

채널 고정 메시지에서 현재 메시지를 제외합니다.

commandaction_add_reaction

메시지에 반응 달기 {emoji}

메시지에 지정한 유니코드 이모지 리액션을 추가합니다.

입력 필드: emoji(text)
commandaction_remove_reaction

메시지에서 반응 제거 {emoji}

메시지에 달린 특정 이모지 반응을 제거합니다.

입력 필드: emoji(text)
commandaction_clear_all_reactions

메시지의 모든 반응 전부 삭제

메시지에 달린 모든 이모지 반응을 한 번에 청소합니다.

commandaction_send_typing

채널에 봇이 입력 중... 표시하기

채널 하단에 봇이 메시지를 타이핑 중인 것처럼 표시합니다.

commandaction_defer_reply

응답 지연(3초 초과 작업 대비)

슬래시 명령어의 타임아웃 방지를 위해 응답 대기 상태를 먼저 알립니다.

입력 필드: ephemeral(dropdown)
commandaction_send_dm

유저 [ID: {userId}]에게 DM(개인메시지) 전송 {content}

특정 사용자에게 디스코드 1:1 개인 다이렉트 메시지를 보냅니다.

입력 필드: userId(text), content(text)
commandaction_create_thread

현재 메시지에서 스레드 생성 [이름: {name}]

수신된 메시지를 기점으로 새로운 하위 토론 스레드를 생성합니다.

입력 필드: name(text)

임베드 & UI

(10개 블록)

리치 임베드 카드, 인터랙티브 버튼, 선택 드롭다운 메뉴, 모달 팝업

commandembed_create

새 임베드 생성 [제목: {title}] [설명: {desc}]

디스코드 전용 카드형 임베드 인스턴스를 초기화합니다.

입력 필드: title(text), desc(text)
commandembed_set_color

임베드 색상 설정 {color}

임베드 좌측 띠의 테두리 컬러를 지정합니다.

입력 필드: color(color)
commandembed_add_field

임베드 필드 추가 [이름: {name}] [내용: {value}]

임베드 내부에 소항목 이름과 내용을 배치합니다.

입력 필드: name(text), value(text), inline(dropdown)
commandembed_set_thumbnail

임베드 썸네일(우측상단) 설정 [URL: {url}]

임베드 우측 상단에 작게 표시될 썸네일 이미지 URL을 지정합니다.

입력 필드: url(text)
commandembed_set_image

임베드 대형 이미지(하단) 설정 [URL: {url}]

임베드 본문 하단에 큼직하게 들어갈 대표 이미지 URL을 설정합니다.

입력 필드: url(text)
commandembed_set_footer

임베드 푸터 문구 설정 {text}

임베드 맨 아래에 작게 나타나는 푸터 문구를 지정합니다.

입력 필드: text(text)
commandembed_send

현재 구성된 임베드 채널 전송

지금까지 만든 임베드를 채널이나 답장으로 발송합니다.

commandbutton_create

버튼 생성 [글자: {label}] [ID: {customId}]

사용자가 누를 수 있는 인터랙티브 액션 버튼을 전송합니다.

입력 필드: label(text), customId(text), style(dropdown)
commandbutton_link_create

외부 링크 연결 버튼 생성 [글자: {label}] [URL: {url}]

클릭 시 지정한 웹사이트로 이동하는 링크 버튼을 생성합니다.

입력 필드: label(text), url(text)
commandmodal_show

모달 팝업창 띄우기 [ID: {customId}] [제목: {title}]

사용자의 화면에 텍스트를 입력할 수 있는 팝업 창을 띄웁니다.

입력 필드: customId(text), title(text)

흐름 제어 & 반복

(10개 블록)

만약(if/else), N번 반복, 조건 반복(while), 리스트 순회, 대기, 에러 처리

c-blockcontrol_if

만약 <조건> 이라면

조건이 참(True)인 경우에만 내부 블록들을 실행합니다.

c-blockcontrol_if_else

만약 <조건> 이라면 / 아니면

조건이 참일 때와 거짓일 때 각각 다른 코드를 수행합니다.

c-blockcontrol_repeat_times

{times} 번 반복하기

지정한 횟수만큼 블록 시퀀스를 반복 수행합니다.

입력 필드: times(number)
c-blockcontrol_repeat_while

<조건> 인 동안 계속 반복하기

조건이 참을 만족하는 동안 루프를 계속 실행합니다.

c-blockcontrol_for_each

리스트 [{listVar}] 의 각 항목 [변수: {itemVar}] 반복

배열 리스트의 모든 요소를 하나씩 꺼내며 반복 실행합니다.

입력 필드: listVar(text), itemVar(text)
commandcontrol_wait

{seconds} 초 동안 대기하기

다음 블록을 수행하기 전 일정 시간 일시 정지합니다.

입력 필드: seconds(number)
commandcontrol_wait_ms

{ms} 밀리초(ms) 동안 대기하기

1/1000초 단위로 정밀하게 대기합니다.

입력 필드: ms(number)
commandcontrol_break

현재 반복문 즉시 탈출 (Break)

진행 중인 루프를 즉시 중단하고 빠져나옵니다.

commandcontrol_continue

다음 반복으로 건너뛰기 (Continue)

현재 회차의 남은 코드를 건너뛰고 다음 반복을 이어갑니다.

c-blockcontrol_try_catch

오류 감지 시도 (Try / Catch)

명령 실행 중 에러가 발생해도 봇이 꺼지지 않도록 안전하게 예외를 처리합니다.

연산 & 논리

(6개 블록)

사칙연산, 비교 연산자(=, !=, >, <), 논리곱(AND), 논리합(OR), 문자열 조작

booleanop_compare

<값 1> {op} <값 2>

두 값을 비교하여 참 또는 거짓을 산출합니다.

입력 필드: op(dropdown)
booleanop_logic

<조건 1> {op} <조건 2>

두 조건식 간의 논리곱(AND) 또는 논리합(OR)을 계산합니다.

입력 필드: op(dropdown)
booleanop_not

<조건> 이(가) 아니다 (NOT)

조건의 참/거짓 결과를 반대로 뒤집습니다.

reporterop_math

<숫자 1> {op} <숫자 2>

기본 사칙연산(더하기, 빼기, 곱하기, 나누기, 나머지)을 계산합니다.

입력 필드: op(dropdown)
reporterop_random

{from} 부터 {to} 사이의 난수(무작위 수)

지정한 최소값과 최대값 사이의 임의의 정수를 추출합니다.

입력 필드: from(number), to(number)
reporterop_join_strings

<문자열 1> 과(와) <문자열 2> 결합

두 개의 텍스트 문자열을 하나로 이어 붙입니다.

변수 & 리스트

(6개 블록)

변수 저장/연산, 리스트(배열) 생성/추가/삭제, JSON 데이터 처리

commandvar_set

변수 [{varName}] 을(를) {value} (으)로 정하기

지정한 변수에 새로운 값을 대입합니다.

입력 필드: varName(text), value(text)
commandvar_change

변수 [{varName}] 값에 {amount} 만큼 더하기

숫자형 변수의 값을 일정 크기만큼 증가시키거나 감소시킵니다.

입력 필드: varName(text), amount(number)
reportervar_get

변수 ({varName})

메모리에 보관된 변수의 값을 불러옵니다.

입력 필드: varName(text)
commandlist_create

새 리스트 [{listName}] 초기화

빈 배열 리스트를 새로 만듭니다.

입력 필드: listName(text)
commandlist_add

리스트 [{listName}] 에 항목 {item} 추가하기

리스트의 맨 뒤에 새 항목을 밀어 넣습니다.

입력 필드: listName(text), item(text)
reporterlist_length

리스트 ({listName}) 의 항목 개수

리스트에 들어 있는 전체 요소의 수를 반환합니다.

입력 필드: listName(text)

디스코드 정보

(8개 블록)

메시지 작성자, 채널, 서버, 슬래시 명령어 옵션값 조회

reporterdata_author_name

메시지/명령어 작성자 닉네임

이벤트를 유발한 디스코드 사용자의 닉네임을 가져옵니다.

reporterdata_author_id

작성자 고유 디스코드 ID

사용자의 18~19자리 고유 디스코드 유저 ID입니다.

reporterdata_author_mention

작성자 멘션 태그 (<@ID>)

메시지 전송 시 유저를 멘션할 수 있는 태그 문자열입니다.

reporterdata_message_content

수신된 메시지 본문 텍스트

채팅으로 전송된 전체 텍스트 내용입니다.

reporterdata_channel_id

현재 채널 ID

이벤트가 발생한 채널의 고유 ID입니다.

reporterdata_guild_id

현재 서버(Guild) ID

명령어가 실행된 디스코드 서버의 고유 ID입니다.

reporterdata_guild_member_count

현재 서버 전체 멤버 수

서버에 가입되어 있는 총 유저 수를 가져옵니다.

reporterdata_command_arg

슬래시 옵션값 가져오기 [이름: {name}]

슬래시 명령어와 함께 전달된 인자 값을 추출합니다.

입력 필드: name(text)

서버 관리 & 보안

(6개 블록)

유저 추방, 차단(밴), 타임아웃, 역할 관리, 채널 관리, 일괄 청소

commandmod_kick_member

유저 추방하기 [유저ID: {userId}] [사유: {reason}]

서버에서 특정 멤버를 즉시 쫓아냅니다(재입장 가능).

입력 필드: userId(text), reason(text)
commandmod_ban_member

유저 영구 차단(밴)하기 [유저ID: {userId}] [사유: {reason}]

특정 멤버를 서버에서 영구적으로 차단(Ban)합니다.

입력 필드: userId(text), reason(text)
commandmod_timeout_member

유저 타임아웃 [유저ID: {userId}] [초: {seconds}]

일정 시간 동안 멤버의 채팅 및 음성 발언을 차단합니다.

입력 필드: userId(text), seconds(number)
commandmod_purge_messages

현재 채널 메시지 일괄 청소 [개수: {count}개]

채널의 최근 메시지들을 한꺼번에 대량 삭제합니다.

입력 필드: count(number)
commandmod_add_role

멤버에게 역할 부여 [유저ID: {userId}] [역할ID: {roleId}]

특정 사용자에게 디스코드 역할을 추가합니다.

입력 필드: userId(text), roleId(text)
commandmod_remove_role

멤버의 역할 제거 [유저ID: {userId}] [역할ID: {roleId}]

사용자가 가지고 있던 특정 역할을 박탈합니다.

입력 필드: userId(text), roleId(text)

영구 DB 저장소

(3개 블록)

봇 재부팅 후에도 유지되는 키-값 영구 데이터베이스 저장 및 조회

commanddata_db_set

영구 DB에 저장 [키: {key}] [값: {val}]

봇이 재부팅되어도 지워지지 않는 영구 저장소에 키-값을 저장합니다.

입력 필드: key(text), val(text)
reporterdata_db_get

영구 DB에서 가져오기 [키: {key}]

영구 저장소에 기록된 키의 데이터를 불러옵니다.

입력 필드: key(text)
commanddata_db_delete

영구 DB에서 키 삭제 [키: {key}]

영구 저장소에서 특정 키 항목을 완전히 삭제합니다.

입력 필드: key(text)