HK

python

파이썬 디스코드봇 개발 #5 밴, 킥 등의 관리 명령어 만들기

DevRuby 16 일 전 조회 수 146 추천 수 0

안녕하세요, 오늘도 어김없이 찾아온 디스코드 봇 개발 강좌입니다. 쨖쨖쨖쨖쨖

이번 강좌에서는 밴, 킥 등의 명령어를 구성하고, 만들어볼겁니다

먼저 어떤 방식으로 만들지 구상해봅시다.


주의

이번 코드는 난이도가 높을 수 있습니다.



Ban Command

순서

1.만약 메세지의 처음 부분이 "!밴" 이라면 다음 코드(2번~) 실행하기

2.메세지를 보낸 사람의 권한을 확인하고, 권한이 없다면 실행하지 않기

3.메세지에서 밴할 대상의 유저를 찾아 밴하기

4.완료 메세지와 밴이 된 유저의 DM으로 메세지 보내기


킥 커맨드도 크게 다르지 않습니다.


Kick Command

순서

1.만약 메세지의 처음 부분이 "!킥" 이라면 다음 코드(2번~) 실행하기

2.메세지를 보낸 사람의 권한을 확인하고, 권한이 없다면 실행하지 않기

3.메세지에서 킥할 대상의 유저를 찾아 밴하기

4.완료 메세지와 킥이 된 유저의 DM으로 메세지 보내기


밴과 킥 명령어의 코드는 둘다 크게 다르지 않아 킥 커맨드를 기준으로 설명하겠습니다.

밴 함수는 await user.ban(string reason) 이고, 킥 함수는 await user.kick(string reason) 입니다.


코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(message.content.split(" ")[0] == "!킥"):
    if(message.author.guild_permissions.kick_members):
        try:
            user = message.guild.get_member(int(message.content.split(' ')[1][3:21]))
            reason = message.content[25:]
            if(len(message.content.split(" ")) == 2):
                reason = "None"
            await user.send(embed=discord.Embed(title="킥", description = f'당신은 {message.guild.name} 서버에서 킥당했습니다. 사유는 다음과 같습니다. ```{reason}```', color = 0xff0000))
            await user.kick(reason=reason)
            await message.channel.send(embed=discord.Embed(title="킥 성공", description = f"{message.author.mention} 님은 해당 서버에서 킥당하셨습니다. 사유:```{reason}```", color = 0x00ff00))
        except Exception as e:
            await message.channel.send(embed=discord.Embed(title="에러 발생", description = str(e), color = 0xff0000))
            return
    else:
        await message.channel.send(embed=discord.Embed(title="권한 부족", description = message.author.mention + "님은 유저를 킥할 수 있는 권한이 없습니다.", color = 0xff0000))
        return
cs

생각보다 많이 복잡하죠?

코드 설명

첫번째 줄: 메세지의 내용을 띄어쓰기별로 분해한 배열의 가장 앞자리가 !킥 이라면

ex) !킥 ㅁㄴㅇㄹ or !킥 @ruby

두번째 줄: 메세지를 보낸 유저가 유저를 킥 할 수 있는 권한을 가지고 있는지 확인하기

세번째 줄: 에러가 안났을때 실행되는 구문

네번째 줄: 킥할 대상인 유저를 찾고, user 변수에 값을 넣기

다섯번째 줄: 킥한 이유를 찾기

6~7번째 줄: 이유가 없다면 이유를 "None"로 바꾸기

여덟번째 줄: 킥당할 유저의 DM으로 메세지 보내기

아홉번째 줄: 킥하기

열번째 줄: 킥 성공 메세지 보내기

11~13번째 줄: 명령어 실행 과정에서 오류가 났다면, 오류 메시지 출력하기

14~16번째 줄: 메세지를 보낸 유저가 킥 권한을 가지고 있지 않다면 명령어 종료하기



결과

ba5688decea74eb09cb8376596f39ef2.png


사유를 입력하지 않았을때


45811cb32cd88561f74cc51be7feadd2.png

사유도 입력했을때


b10b1b980bb31c15909b0ce989f87407.png

버그가 났을때



 킥당한사람이 받는 DM 메세지


오늘은 이만 여기까지 알아보도록 하겠습니다 @-@

다음에는 유저 뮤트 기능에 대해 설명하겠습니다. 읽어주셔서 감사합니다!


1개의 댓글

DC
1 일 전

지금까지 감사했습니다.

 

제목 글쓴이 조회 수 날짜 추천 수
[프리미엄] [2] [HK] 마인크래프트 개발 디스코드 - 컨텐츠를 만들고 서버 어드민이 되어보자! 5 U DC 424 4 일 전 0
[채널공지] 고퀄리티 서버 만들기 안내 DC 82 4 일 전 0
[python] 심파기 - 파이썬 [2] 변수 - 1 N logdev 5 2 시간 전 0
[개발 [ 마인크래프트 ]] 마인크레프트 미스틱몹 변장에 대해서 알아보자 Cloud 16 12 시간 전 0
심해까지 파고들어가는 기초 강좌 - 파이썬 강좌 1 logdev 29 1 일 전 0
[스크립트 기초] [ skript lecture ] custom craft 1 GalaxyNetwork 38 1 일 전 0
[마크소식] Minecraft: Java Edition - Snapshot 20w22a DC 35 1 일 전 0
[python] 파이썬 얕은 복사, 깊은 복사 2 logdev 34 2 일 전 0
[python] 파이썬으로 검색 알고리즘 짜기 3 logdev 27 2 일 전 1
[스킨제작] 마인크래프트 하늘 느낌 스킨 배포 2 륜온 40 2 일 전 0
[python] 파이썬 디스코드봇 개발 #6 유저 뮤트 기능 만들기 1 DevRuby 68 5 일 전 0
[질문채널] 스크립트좀 도와주세요 ㅠㅠ 3 Y_Lemon 42 5 일 전 0
[서버제작 기초] 마인크래프트 서버 기초강좌 :: (6) 스크립트 플러그인을 사용해 보자! 승규ㅣrunkan 44 6 일 전 0
[마크소식] Minecraft (Bedrock) - 1.16.0.63 3 DC 109 12 일 전 0
[마크소식] Minecraft: Java Edition - Snapshot 20w21a 1 DC 130 12 일 전 0
[Java] [Java기초] 2강 - 출력함수 AshBluebird 64 15 일 전 0
[python] 파이썬 디스코드봇 개발 #5 밴, 킥 등의 관리 명령어 만들기 1 DevRuby 146 16 일 전 0
[서버제작 기초] 마인크래프트 서버 기초 강좌 :: (3) 유저 권한 설정하기 1 승규ㅣrunkan 126 17 일 전 0
[python] 파이썬 디스코드봇 개발 #4 임베드로 메세지 꾸미기(2) 1 DevRuby 73 17 일 전 0
[python] 파이썬 디스코드봇 개발 #3 임베드로 메세지 꾸미기(1) 6 DevRuby 77 18 일 전 0




개발자 최신글
https://www.koreaminecraft.net/files/thumbnails/395/766/001/262x150.crop.jpg
마인크래프트 인플루언서 팀 맵씨패밀리에서 인원을 모집합니다!

맵씨

2020-06-02

0

사진이 없습니다.

그외의 질문

마인크래프크에서 서버 여는법

스즈마바

2020-06-02

0