개인 자료란 (JE)

  서버 커뮤니티

Profile kiki7000 대표칭호 없음
Profile

안녕하세요 하이퀄리티의 개발자 중 한명인 키키입니다^^

제가 오늘부터 시간 날때마다 Discord.py 고급 기능 강좌를 달려 하는데 잘 봐주세용^^


주의!: 이 강좌는 파이썬 설치 같은 내용은 담고 있지 않으며 디스코드 봇을 만들수 있는 유저들 위주로 강의합니다(메시지 전송 등 기본적인 기능들만 알아도 되요)

클라이언트를 client라는 변수에 정의했을때를 기준으로 강의 합니다


1. 몆초마다 바뀌는 상테메시지

상테메시지는 봇의 명령어, 서버 수 등을 설명하기 위해서 쓰입니다.

그러면 가장 먼저 상테메시지를 정하는 방법을 알려드릴게요.

await client.change_presence(status = discord.Status.online, activity = discord.Game('상태메시지'))

이 코드를 살명하면 change_presence 함수는 상태메시지를 바꾸는 함수입니다. 

여기서 status는 봇의 온라인, 자리비움, 오프라인 등의 상태를 정하는 항목이고 activity는 상태메시지입니다.

하지만 discord.py는 문자열이 아닌 특정 클래스로 상태메시지를 정하게 해주는데요, 그 클래스로 변환해주는 함수기 discord.Game('문자열') 입니다.

그렇게 상태메시지를 정할수 있습니다

근데 이렇게 하면 몆초마다 바뀌는 것이 아니기 때문에 다른 방법을 써야 합니다.

on_ready 이벤트 맨 아래줄에 await bt(['상테메시지 1', '상태메시지 2']) 이런식으로 나주세요. 

상테메시지는 편집해서 늘려도 되고 bt는 우리가 만들 async 함수입니다

그리고 아무대나 아래 코드를 작성해주세요

async def bt(games):
    await client.wait_until_ready()

    while not client.is_closed():
        for g in games:
            await client.change_presence(status = discord.Status.online, activity = discord.Game(g))
            await asyncio.sleep(5)
        

이 코드는 몆초마다 상태메시지를 바꾸는 코드입니다

설명을 하면 bt 함수를 async로 만들었습니다

await client.wait_until_ready() 는 봇이 준비 될때까지 기다리는 코드로 아직 인켜진 상태면 계속 기다리고 있습니다

while not client.is_closed()는 클라이언트가 꺼지 있지 않을때, 즉 봇이 켜저 있을때 실행해서 봇이 꺼지면 반복문도 종료됩니다

for g in games는 games라는 리스트 안의 값들을 차례대로 g 에 넣는 반복문입니다

await asyncio.sleep(5) 는 5초 동안 쉬는 코드입니다(바꾸셔도 문제는 없어요)

이렇게 저 코드로 몆초마다 상태메시지를 바꿀수 있습니다


2. 봇의 채널 수

이번에는 먼저 전체 코드를 먼저 주겠습니다

ch = 0
for g in client.guilds:
    ch += len(g.channels)

이 코드는 비어있는 변수 ch를 0으로 정의하고 for g in client.guilds로 g라는 변수 안에 client.guilds의 각 값을 너주는 코드입니다.

len(g.channels)는 g 서버의 채널들 수로 ch에 더해줘서 반복문이 끝나면 ch에 봇의 채널 수가 담기게 됩니다

이 변수를 나중에 상태메시지에 써도 되고 봇 정보 이런곳에 쓰시면 됩니당


이제 강의를 마치겠습니당. 앞으로도 좋은 내용 가지고 올게요^^


https://discord.gg/2gxSqWu - 마인크래프트 개발자 디스코드

Warning
댓글이 없습니다.

새로운 댓글을 등록해 주세요!

뉴스 및 창작물
/files/thumbnails/384/778/003/262x150.crop.jpg?20240507003327

업데이트

마인크래프트 자바 에디션 스냅샷 24w18a

학교가기싫다

2024-05-06

0

/files/thumbnails/855/781/003/262x150.crop.jpg?20240505141129

레드스톤

레이저 클리너

GlassesFilm

2024-05-05

1

/files/thumbnails/576/775/003/262x150.crop.jpg?20240426232553

아티클

이달의 블록: 단단한 진흙

학교가기싫다

2024-04-26

0

/files/thumbnails/115/774/003/262x150.crop.jpg?20240428135129

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0

/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

1