[시니어 디스코드] 매니저 봇 #1 - 개발 배경

Published: (February 14, 2026 at 11:18 PM EST)
4 min read
Source: Dev.to

Source: Dev.to

매니저 봇 개요

시니어 디스코드 운영을 준비하면서 “매니저(Manager)” 봇을 구현하기로 기획했다.
매니저 봇의 주요 역할은 다음 두 가지이다.

  1. 이미 부여된 역할에 따라 닉네임을 변경할 수 있게 한다.
  2. 특정 채널에서는 세부 역할을 부여해, 플레이 카테고리에서 보여지는 채널을 제한한다.

서버 내 역할 채널에서는 클랜전, 생존전, 파티 랭크전, 클랜 랭크전 등 4가지 서브 역할을 별도로 부여받을 수 있다. 해당 서브 역할에 따라 플레이 카테고리에서 표시되는 채널이 달라지므로, 보이스 채널이 많아지는 상황에서도 필요한 채널만 보기 편리하게 된다.

온라인 게임 커뮤니티에서는 소속감과 서로를 알아볼 수 있는 닉네임 양식이 중요하다. 인게임에서는 자유롭게 닉네임을 설정할 수 있지만, 디스코드에서는 다음과 같은 규칙을 적용한다.

  • 닉네임 앞에 시니어를 붙여 소속감을 표시할 수 있다.
  • 용병이 인입될 경우, 닉네임 뒤에 **년(연도)**와 용병 주인을 추가한다.

닉네임 및 역할 변경 규칙

명령어 사용 채널적용 대상조건
모든 채널자기 닉네임 및 타인 닉네임동일 역할 또는 자신보다 낮은 역할만
챗봇, 게스트자기 닉네임 및 타인 닉네임본인 또는 자신보다 낮은 역할만
게스트자기 닉네임본인만
클랜원타 클랜원 닉네임변경 불가
용병 및 게스트타인 닉네임변경 불가 (본인 제외)

위 규칙을 구현하려면 명령어 사용 가능 채널역할 등급을 동시에 체크해야 한다. 핵심 로직은 on_message 이벤트에서 message.channel.namemessage.author.roles를 확인하고, 조건에 부합하지 않을 경우 무반응 및 메시지 삭제 처리를 수행한다.

구현 포인트

  • 무반응: 해당 채널에서 명령어 사용이 불가함을 안내하고, 불필요한 채팅이 쌓이는 것을 방지한다.
  • 메시지 삭제: “여기서는 사용할 수가 없구나”라는 점을 명확히 인식시켜 주는 친절한 방법이다.

코드 예시

# 무반응 + 메시지 삭제
if message.channel.name not in allowed_channels:
    try:
        await message.delete()
    except:
        pass
    return

# 여기서부터는 허용된 채널에서만 닉네임 변경 로직 실행
await handle_nickname_change(message)

채널 검증을 먼저 수행하고, 허용된 경우에만 handle_nickname_change 함수를 호출해 닉네임 변경 로직을 진행한다. 구현 자체는 복잡하지 않으며, 역할과 채널 검증만 정확히 처리하면 된다.

0 views
Back to Blog

Related posts

Read more »

dlt MCP Server for Popular IDEs

Overview This demo showcases how to set up and use the dlt MCP Server for data pipeline validation and inspection. The MCP server enables interactive querying...