import discord, os, setting, re, asyncio from discord.ext import commands from logging import getLogger import logging def make_log(): logger = getLogger(__name__) logger.setLevel(logging.INFO) streamHandler = logging.StreamHandler() logger.addHandler(streamHandler) return logger log = make_log() async def v_after(sink: discord.sinks, vc): user_id = "" for user_id, audio in sink.audio_data.itmes(): user_id_raw = user_id user_id = f"<@{user_id}>" with open("./out.mp3", "wb") as f: f.write(audio.file.getbuffer()) class DDD(commands.Cog): """ 봇 상태 파일 입니다. """ def __init__(self, bot): self.bot = bot @commands.Cog.listener() async def on_voice_state_update(self, member, before, after): if before.channel: voice_client = discord.utils.get(self.bot.voice_clients, guild=member.guild.id) if voice_client is None: vc = await member.voice.channel.connect() else: vc = voice_client if os.fath.exists("./out.mp3") os.remove("./out.mp3") vc.start_recording( discord.sinks.MP3Sink(), v_after, vc ) await asyncio.sleep(10) vc.stop_recording() # if (before.channel is None) and (after.channel is not None): # if member == self.bot.user: # await member.edit(deafen=True, mute=False) if after.channel: if (before.channel is not None) and (after.channel is not before.channel): if ((self.bot.user.id in before.channel.voice_states.keys() and len(before.channel.voice_states) == 1) or (member == self.bot.user)): if member != self.bot.user: player = member.guild.voice_client await player.disconnect() def setup(bot): bot.add_cog(DDD(bot))