This commit is contained in:
2024-09-19 20:11:36 +02:00
parent 28db612fad
commit ada24f505d
+19 -8
View File
@@ -3,10 +3,10 @@ import wave
import assemblyai as aai
import discord
from discord.ext import commands, voice_recv
from discord.ext import commands, voice_recv, tasks
from discord.opus import Decoder as OpusDecoder
from queue import Queue, Empty
import time
# Replace with your API key
aai.settings.api_key = "aa9962f0088a449a9c4ab2361e96cc08"
discord.opus._load_default()
@@ -99,7 +99,7 @@ class SRBuffer(voice_recv.AudioSink):
super().__init__()
self.wavewriter = {
"346956223645614080" : WaveWriter("346956223645614080")
"346956223645614080" : [WaveWriter("346956223645614080"), time.time_ns(), False]
}
def on_user_connect(self, username):
@@ -116,7 +116,9 @@ class SRBuffer(voice_recv.AudioSink):
return False
def write(self, user, data) -> None:
self.wavewriter[str(user.id)].writeframes(data.pcm)
self.wavewriter[str(user.id)][0].writeframes(data.pcm)
self.wavewriter[str(user.id)][1] = time.time_ns()
self.wavewriter[str(user.id)][2] = True
def cleanup(self) -> None:
try:
@@ -130,7 +132,6 @@ class SRBuffer(voice_recv.AudioSink):
class Transcriber(commands.Cog):
def __init__(self, bot):
self.bot = bot
self._last_member = None
self.wsink = SRBuffer()
self.threads = []
self.comm_queue = Queue()
@@ -160,6 +161,14 @@ class Transcriber(commands.Cog):
logger.info(self.bot.voice_clients)
vc.listen(self.wsink)
@tasks.loop(seconds=5)
async def check_data(self):
for item in self.wsink.wavewriter.values():
print(item[0])
print(item[1])
print(item[2])
print(time.time_ns())
@commands.Cog.listener()
async def on_voice_state_update(self, user, before, after):
if before.channel is None:
@@ -167,9 +176,11 @@ class Transcriber(commands.Cog):
self.wsink.on_user_connect(user.id)
elif after.channel is None:
logger.info("User %s disconnected from channel %s", user, before.channel.name)
self.wsink.on_user_disconnect(user.id)
elif after.self_mute or after.mute:
self.wsink.rotate_user(user.id)
operation = {
"type": "user_cleanup",
user : str(user.id)
}
self.comm_queue.put(operation)
else:
logger.info("User VC status changed %s", user.id)
logger.info("Before %s", before)