Custom Commands V3Flows와 에디터
Custom Commands V3베타

봇의 로직을 단계별로

Flow는 단계의 목록이에요. 오늘의 질문 Flow는 다섯 단계로 이루어져 있어요: 질문 목록 읽기, 다음 질문 고르기, 게시하기, 스레드 열기, 횟수 세기. 단계를 추가하고, 값을 연결하고, 테스트한 다음 켜기만 하면 돼요.

오늘의 질문

활성저장

트리거

변경

스케줄, 매일 09:00

#1

스토리지 값 가져오기(get-storage-value)

질문 목록을 읽어 와요:{questions}

#2

다음 항목 고르기(array-at)

어제 낸 질문의 다음 항목

#3

메시지 보내기(send-message)

입력 파라미터

채널:#general

메시지:오늘의 질문

#4

스레드 만들기(start-thread-from-message)

해당 메시지에 스레드 열기

#5

스토리지 값 증가(increment-storage-value)

질문 출제 횟수를 기록할 곳:{asked}

참고용 이미지예요. 실제 화면은 다를 수 있어요

이 다섯 단계가 09:00에 만들어 내는 결과

다섯 단계가 메시지 하나를 만들어요. 그 아래 스레드에 답변이 모이고, 카운터가 내일은 다음 질문이 나가도록 챙겨요.

general
온라인
내 봇봇09:00

오늘의 질문

아무리 오래돼도 계속 하게 되는 단 하나의 게임은 뭐예요?

질문 42 / 120

Mira09:04

Terraria요. 겨울마다 다시 설치해요.

#general에 메시지 보내기

참고용 이미지예요. 실제 화면과 동작은 다를 수 있어요

스크립트가 아니라 단계로

각 단계는 카탈로그의 동작 하나이고 자체 입력값이 있으며, 단계가 만든 값은 이후 어떤 단계에도 연결할 수 있어요. 에디터는 맞는 값만 보여 줘요. 이 선택기 뒤에는 691개의 동작과 181개의 파라미터 타입이 있어요.

고정 값, 연결된 변수, 템플릿

모든 입력은 이 세 가지 중 하나를 받아요. 템플릿은 직접 쓴 글과 삽입한 변수를 섞어 쓰는 방식이에요.

변수 선택기가 타입을 구분해요

맞지 않는 값은 숨기고, 객체의 속성 안으로 들어가고, 비어 있을 수 있는 값은 경고해 주며, 변환 단계를 대신 추가해 줄 수도 있어요.

연결된 값은 칩으로 표시돼요

이 행의 칩은 질문 목록과 채널이라서, 값이 어디서 왔는지 한눈에 볼 수 있어요.

모든 단계에는 비용이 있어요

무료부터 매우 무거움까지 있고, Flow는 활성화하기 전에 최악의 경우를 보여 줘요.

빈 Flow에서 시작하지 않아도 돼요. 대시보드에는 열어서 바꿔 쓸 수 있는 템플릿이 있어요: 인사 응답, 신규 멤버 환영, /warn 명령어, /remind 명령어, XP 시스템, 건의, 이벤트 신청.

오늘의 질문

활성저장

트리거

변경

스케줄, 매일 09:00

#1

스토리지 값 가져오기(get-storage-value)

질문 목록을 읽어 와요:{questions}

#2

다음 항목 고르기(array-at)

어제 낸 질문의 다음 항목

#3

메시지 보내기(send-message)

입력 파라미터

채널:#general

메시지:오늘의 질문

#4

스레드 만들기(start-thread-from-message)

해당 메시지에 스레드 열기

#5

스토리지 값 증가(increment-storage-value)

질문 출제 횟수를 기록할 곳:{asked}

참고용 이미지예요. 실제 화면은 다를 수 있어요

분기와 반복

자동화에는 판단이 필요해요. If, Switch, 무작위 분기, 하위 명령어 분기로 Flow를 나누고, 각 항목 반복, 각 맵 항목 반복, Repeat로 목록과 맵을 순회하며 Break와 Continue를 쓸 수 있어요. Try 블록은 Discord가 거부했을 때 복구할 자리를 마련해 줘요.

분기마다 자기만의 변수가 있어요

분기 안에서 설정한 값은 그 분기에만 속해요.

Try와 오류 시 분기

오류 코드에 따라 나눌 수 있어요: 권한 없음, 찾을 수 없음, 잘못된 입력, 스토리지 오류, 시간 초과, 인터랙션 만료.

멈추는 게 맞을 때는 멈춰요

이 Flow의 If는 스태프 채널에 알림을 게시하고 멈춰요. 빈 질문을 게시하지 않아요.

폭주하는 반복은 스스로 멈추니까, 실수가 있어도 아침 내내 돌아가지 않고 멈춰요.

오늘의 질문

활성저장

트리거

변경

스케줄, 매일 09:00

#1

스토리지 값 가져오기(get-storage-value)

질문 목록을 읽어 와요:{questions}

#2

If(if-condition)

목록이 비어 있어요: #staff에 알림을 게시하고 멈춰요

#3

각 항목 반복(for-each)

아직 안 쓴 질문이 나올 때까지 목록을 훑어요

#4

메시지 보내기(send-message)

질문을 임베드로 게시할 곳:#general

#5

스레드 만들기(start-thread-from-message)

해당 메시지에 스레드 열기

참고용 이미지예요. 실제 화면은 다를 수 있어요

Flow가 다른 Flow를 호출할 수 있고, 기다림도 하나의 단계예요

동작을 한 번 만들어 두고 필요한 곳 어디서든 호출하세요. Flow가 계속하기 전에 답이 필요할 때는, 그 대기 상태가 메모리에 머무르지 않고 기록되어서 봇을 재시작해도 사라지지 않아요.

다른 Flow 호출

값을 넘기고 결과를 돌려받아요. 서로를 빙글빙글 호출하게 되는 Flow는 거부돼요.

호출된 Flow는 호출한 쪽의 실행에 속해요

실행 기록에 그렇게 표시되고 호출한 쪽으로 연결돼요. 커스텀 이벤트는 더 느슨한 방식이에요: 한 Flow가 보내고 다른 Flow가 들어요.

대기는 재시작해도 유지돼요

확인 요청, 선택 요청, 메시지 대기, 팝업 양식 표시 후 제출 대기. 그 사이에 재시작해도 대기가 사라지지 않아요.

예약 실행

Flow 실행 예약은 Flow 안에서 나중 실행을 예약하고, 대기 중인 것을 취소하고 확인하는 동작도 있어요.

누군가를 기다리는 실행이 있는 동안 Flow를 수정하면, 그 대기 중인 실행은 멈추고 로그에 그렇게 남아요. 몇 달 동안 계속 쓸 수 있어야 한다면 Flow를 시작하는 버튼이 더 좋은 방법이에요. 아무도 누르지 않는 동안 비용이 들지 않고 만료되지도 않아요.

건의 검토하기

활성저장

트리거

변경

팝업 양식 제출됨, 질문 건의하기

#1

메시지 보내기(send-message)

승인 버튼과 함께 건의를 게시할 곳#staff

#2

버튼 대기(wait-for-interaction)

관리자가 누를 때까지 일시정지

#3

스토리지 값 설정(set-storage-value)

질문을 다음에 추가{questions}

#4

다른 Flow 호출(call-flow)

오늘의 질문, 새 질문을 인자로 전달

참고용 이미지예요. 실제 화면은 다를 수 있어요

적용하기 전에 미리 확인하세요

테스트 실행은 내 서버 데이터를 대상으로 Flow를 시뮬레이션해요. 아무것도 전송, 변경, 삭제되지 않아요. 실행할 사용자, 실행할 채널, 트리거가 넘겨줄 값을 직접 고르면, 결과에 각 단계가 실제로 무엇을 했을지 보여 줘요. 테스트하는 데는 서버에 비용이 들지 않아요.

Flow는 활성화되기 전에도 검사하기 때문에, 문제가 아침 아홉 시가 아니라 에디터에서 발견돼요. 폭주하는 반복이 봇을 멈추게 할 수도 없어요. 스스로 멈추거든요.

초안 또는 활성

초안은 저장하고 검사하지만 실행되지는 않아요.

활성 Flow를 저장하면 바로 적용돼요

저장하는 즉시 봇이 새 버전을 가져가요. 적용이 안 되면 이미 실행 중이던 버전이 계속 Flow를 처리하니 다시 시도하면 돼요.

실수로 잃어버리는 일은 없어요

열어 둔 사이에 다른 사람이 Flow를 저장했다면, 그 사람의 작업을 덮어쓰지 않고 경고가 나와요. 삭제한 Flow와 모듈은 30일 동안 복원할 수 있어요.

분명히 알아 둘 점이 하나 있어요. 모든 단계를 보여 주는 건 테스트 실행뿐이에요. 실제 실행은 상태, 소요 시간, 실패한 단계를 기록하지만 지나간 모든 단계를 기록하지는 않아요.

테스트 실행

시뮬레이션 실행이에요. 실제로 전송된 건 없어요

스토리지 값 가져오기

목록 읽기, 120개 항목

다음 항목 고르기

42번 질문

메시지 보내기

#general에 게시했을 거예요

스레드 만들기

해당 메시지에 스레드를 열었을 거예요

스토리지 값 증가

질문 카운터가 41에서 42로 올라갔을 거예요

참고용 이미지예요. 실제 화면은 다를 수 있어요

Flows에 대한 질문

누군가를 기다리고 있는 Flow는 그래요. 확인 요청이나 메시지 대기 같은 대기는 메모리에 머무르지 않고 기록되기 때문에 재시작해도 유지돼요. 알아 둘 예외가 하나 있어요. 실행이 대기하는 동안 Flow를 수정하면 그 실행은 멈추고, 로그에 그렇게 남아요.

내 서버도 베타에 참여할까요?

V3는 규모가 큰 시스템이고 아직 빠르게 바뀌고 있어서, 서버를 한 번에 받지 않고 하나씩 받고 있어요. 모든 신청서는 사람이 읽고, 며칠 안에 답변드려요.

이미 베타에 참여 중인 서버들이 다음에 무엇을 만들지 크게 좌우해요. 만든 결과물은 여러분 거예요. 베타가 끝나도 Flow와 모듈은 그대로 남아요.