음성채널 확인하기
음악을 재생하기 전에 먼저 봇이 음성채널에 들어오거나 나갈 수 있어야 한다
일단 명령어를 사용한 유저가 음성채널에 들어가 있어야지 그 채널로 봇이 들어갈 수 있다.
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
다음엔 유튜브 영상을 가져와서 음원으로 재생해보겠다.
'프로젝트 > 디스코드 봇' 카테고리의 다른 글
디스코드 봇 만들기#6 - 게임봇 계획 (0) | 2021.02.12 |
---|---|
디스코드 봇 만들기#5 - 음악재생 (2) | 2021.02.05 |
디스코드 봇 만들기#3 - 간단한 주사위 게임 (2) | 2021.01.22 |
디스코드 봇 만들기#2 - 간단한 명령어 (10) | 2021.01.15 |
디스코드 봇 만들기#1 - 개발 준비하기 (3) | 2021.01.08 |