Skip to content

Latest commit

 

History

48 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GOMS Discord Bot

광주소프트웨어마이스터고(GSM) 외출제 관리 서비스 GOMS와 연동되는 Discord 봇입니다.

외출제 관리 인원 모집, 참여자 수집, GOMS 서버 권한 동기화, 석식 안내 등을 자동화하여 학생회의 외출제 운영을 지원합니다.

주요 기능

외출제 관리 인원 모집

  • 매주 월요일, 수요일 오전 9시 30분 자동 모집
  • 모집 메시지 자동 전송

참여자 수집

  • 매주 월요일, 수요일 오후 6시 25분 자동 수집
  • 모집 메시지의 🙋 반응자 조회

GOMS 서버 연동

  • GOMS 내부 API 호출
  • Discord 계정과 GOMS 계정 매핑
  • 외출제 관리 인원 권한 자동 부여
  • 기존 학생회 권한 자동 초기화

동기화 결과 안내

  • 동기화 결과 Discord 채널 전송

석식 안내

  • 모집 참여자 자동 멘션
  • 석식 식사 후 외출제 관리 위치 이동 안내

명령어

일반 명령어

명령어 설명
!명령어 사용 가능한 명령어 목록 표시

관리자 명령어

명령어 설명
!외출제 외출제 자동 발송 상태 확인
!외출제 on 외출제 자동 발송 활성화
!외출제 off 외출제 자동 발송 비활성화
!외출제 모집 모집 메시지 수동 전송 및 외출제 상태 활성화
!외출제 공지 외출제 공지 메시지 수동 전송 (관리자 전용)

외출제 공지 자동화

  • 외출제가 ON일 때 매주 월요일과 수요일 13:10 (Asia/Seoul)에 외출제 공지를 자동 전송합니다.
  • 모집/석식 서버와 다른 Discord 서버를 사용하도록 공지 Channel ID를 별도로 설정할 수 있습니다.
  • 1/2/3학년 Role ID를 기준으로 멘션하며, 마지막 자동 공지만 삭제해 최신 공지를 유지합니다.
  • ON/OFF 상태와 마지막 공지 Message ID는 JSON 파일에 저장되어 봇 재시작 후에도 유지됩니다.

동작 흐름

자동 모집

09:30
↓
모집 메시지 전송
↓
🙋 반응 수집

참여자 수집 및 동기화

18:25
↓
참여자 수집
↓
Discord User ID 추출
↓
GOMS 내부 API 호출
↓
권한 동기화
↓
석식 안내
↓
결과 안내

기술 스택

  • Node.js
  • Discord.js v14
  • Axios
  • Node Cron
  • Dotenv

환경변수

기존 환경변수 외에 외출제 공지 자동화에는 다음 값이 필요합니다.

DISCORD_OUTING_NOTICE_CHANNEL_ID=
DISCORD_GRADE_1_ROLE_ID=
DISCORD_GRADE_2_ROLE_ID=
DISCORD_GRADE_3_ROLE_ID=
OUTING_NOTICE_CRON=10 13 * * 1,3
OUTING_STATE_FILE=data/automation-state.json

OUTING_NOTICE_CRON을 생략하면 월요일·수요일 13:10 KST를 사용합니다. 공지 서버에서 Bot에 View Channel, Send Messages, 해당 역할 멘션 권한, Manage Messages 권한을 부여해야 합니다. Role hierarchy와 역할의 멘션 허용 설정도 확인해야 합니다.

라이선스

이 프로젝트는 GOMS 서비스 운영을 위한 내부 프로젝트입니다.

About

[ GOMS | 디스코드 봇-V1 ] 외출제 관리를 더욱 더 간편하게.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages