디스코드 서버를 운영하다보면 유저를 관리해야할 일이 생길 것이다. 매번 유저를 클릭하고 서버 설정에 들어가서 일일이 하는건 귀찮을 수 있다. 그래서 디코봇으로 간단하게 관리하는 방법을 알아보겠다.
유저 관리에 필요한 class이다. 공식 문서에 따르면 User class의 많은 기능을 구현한 class라고 한다. Member class를 통해 추방, 역할 부여 등의 유저 관리를 할 수 있다.
몇 가지 attribute와 method를 알아보겠다.
from discord.ext import commands
@commands.has_permissions(manage_channels=True) # 채널 관리 권한이 있어야 명령어 실행이 가능하다.
@commands.command()
async def dangerous_command(ctx):
~~~
다만 이번 포스팅 코드에서는 메서드 자체에 권한이 설정 되어 있기 때문에 따로 더 사용하지는 않는다.
앞서 언급한 메서드 중 2가지 메서드를 이용한 명령어를 작성해보겠다.
@bot.command(aliases=['추방'])
async def kick_user(ctx, nickname: discord.Member):
await nickname.kick()
await ctx.send(f"{nickname} 님이 추방되었습니다.")
2. ban
@bot.command(aliases=['차단'])
async def ban_user(ctx, nickname: discord.Member):
await nickname.ban()
await ctx.send(f"{nickname} 님이 차단되었습니다.")
Forbidden
권한이 없을 때 발생한다. 권한을 확인하자.
BadArgument
discord.Member 형식이 아닌 일반 문자열로 유저명을 입력 했을 때 발생한다. @유저명으로 멘션하듯이 입력하자.
MissingRequiredArgument
매번 보는 오류처럼 매번 같은 이유로 명령어만 입력하고 유저이름을 입력하지 않았을 때 발생한다.
이번 포스팅에선 디스코드 봇으로 서버의 유저들을 관리하는 방법을 알아봤다. 다음 포스팅에서는 unban, add_roles등 다른 메서드의 사용법을 알아보겠다.
time.sleep(259200)