mirror of
https://github.com/migatu/conjurer.git
synced 2026-07-14 21:38:38 +00:00
aa
This commit is contained in:
+19
-8
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user