728x90
반응형

음성채널 확인하기

음악을 재생하기 전에 먼저 봇이 음성채널에 들어오거나 나갈 수 있어야 한다

 

일단 명령어를 사용한 유저가 음성채널에 들어가 있어야지 그 채널로 봇이 들어갈 수 있다.

print(ctx.author.voice)

ctx.author.voice는 명령어를 사용한 유저가 현재 있는 음성채널의 정보를 가져온다.

들어가 있다면 이름, 아이디, 위치, 비트레이트, 사용자 수 제한 등의 정보를, 들어가 있지 않으면 None를 반환한다.

 

print(ctx.author.voice.channel)

ctx.author.voice.channel는 명령어를 사용한 유저가 현재 있는 음성채널의 이름을 가져온다.

들어가 있다면 음성채널의 이름을, 들어가 있지 않으면 아무것도 반환하지 않는다.

위의 ctx.author.voice에서 name속성만 가져오는 것 같다.

 

음성채널 입장

위에 있는 두 가지를 통해 유저가 음성채널에 있는지 확인하고 음성채널에 봇이 들어가게 해보자

@bot.command()
async def join(ctx)
	if ctx.author.voice and ctx.author.voice.channel:
    	channel = ctx.author.voice.channel
    	await channel.connect()
    else:
    	await ctx.send("음성채널 없음")

음성채널에 들어가 있지 않으면 "음성채널 없음"이라고 출력하고 들어가 있다면 따라 들어간다.

 

음성채널 퇴장

이제 봇을 나가게 해보자

@bot.command()
async def leave(ctx):
	await bot.voice_clients[0].disconnect()

나가게 하는 코드는 간단하다. 하지만 블로그 닉값하는건지 5개정도 방법을 시도했다 다 실패했다.

 

bot.voice_clients만 출력해보았더니 Hex값에 저장된 오브젝트라고 나온다.

별다른 내용은 출력되지 않았으며 매번 Hex값 또한 변경되었다.

좀 더 자세하게 알고 싶다면 API Reference에서 확인하자.

discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Bot.voice_clients

 

API Reference

 

discordpy.readthedocs.io

 

다음엔 유튜브 영상을 가져와서 음원으로 재생해보겠다.