File size: 2,018 Bytes
c0e4962
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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))