From d3553f9e9d6e3cfe59ad3a4bf6b1d6357dc5b608 Mon Sep 17 00:00:00 2001 From: Logan Cusano Date: Thu, 18 May 2023 01:17:45 -0400 Subject: [PATCH] Improved opus loading system --- main.py | 57 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/main.py b/main.py index 0fa3f0d..4b94f06 100644 --- a/main.py +++ b/main.py @@ -1,13 +1,34 @@ -import argparse -from sys import platform +import argparse, platform, os from discord import Intents, Client, Member, opus from discord.ext import commands from NoiseGatev2 import NoiseGate +# Load the proper OPUS library for the device being used +async def load_opus(): + # Check the system type and load the correct library + # Linux ARM AARCH64 running 32bit OS + processor = platform.machine() + print("Processor: ", processor) + if os.name == 'nt': + if processor == "AMD64": + print(f"Loaded OPUS library for AMD64") + opus.load_opus('./opus/libopus_amd64.dll') + return "AMD64" + else: + if processor == "aarch64": + print(f"Loaded OPUS library for aarch64") + opus.load_opus('./opus/libopus_aarcch64.so') + return "aarch64" + elif processor == "armv7l": + print(f"Loaded OPUS library for armv7l") + opus.load_opus('./opus/libopus_armv7l.so') + return "armv7l" + + def main(clientId='OTQzNzQyMDQwMjU1MTE1MzA0.Yg3eRA.ZxEbRr55xahjfaUmPY8pmS-RHTY', channelId=367396189529833476, NGThreshold=50, deviceId=1): intents = Intents.default() - client = Client(intents=intents) + client = commands.Bot(command_prefix='!', intents=intents) @client.event async def on_ready(): @@ -15,24 +36,20 @@ def main(clientId='OTQzNzQyMDQwMjU1MTE1MzA0.Yg3eRA.ZxEbRr55xahjfaUmPY8pmS-RHTY', channelIdToJoin = client.get_channel(channelId) print("Channel", channelIdToJoin) - - if platform == "linux" or platform == "linux2": - # linux - opus.load_opus('./opus/libopus_aarcch64.so') - - elif platform == "win32": - # Windows... - opus.load_opus('./opus/libopus_amd64.dll') - channelConnection = await channelIdToJoin.connect(timeout=60.0, reconnect=True) - print("Joined voice") - streamHandler = NoiseGate( - _input_device_index=deviceId, - _voice_connection=channelConnection, - _noise_gate_threshold=NGThreshold) - # Start the audio stream - streamHandler.run() - print("stream running") + print("Loading opus") + await load_opus() + + if opus.is_loaded(): + channelConnection = await channelIdToJoin.connect(timeout=60.0, reconnect=True) + print("Joined voice") + streamHandler = NoiseGate( + _input_device_index=deviceId, + _voice_connection=channelConnection, + _noise_gate_threshold=NGThreshold) + # Start the audio stream + streamHandler.run() + print("stream running") client.run(clientId)