Update PDAB

- Added standard debugger file for logging
- Added fault handler to see what happens if it faults
This commit is contained in:
Logan Cusano
2024-04-28 03:17:08 -04:00
parent fc6c114473
commit 098dfc9a10
3 changed files with 85 additions and 60 deletions

61
main.py
View File

@@ -1,6 +1,5 @@
# Python client file (client.py)
import argparse
import logging
import os
import platform
import socketio
@@ -8,29 +7,11 @@ import asyncio
from discord import Intents, opus
from discord.ext import commands
from NoiseGatev2 import NoiseGate
from debugger import setup_logger, running_dir
import faulthandler
faulthandler.enable()
running_dir = os.path.dirname(__file__)
# Ensure the directory exists
log_dir = f"{running_dir}/logs"
os.makedirs(log_dir, exist_ok=True)
# Create the file if it doesn't exist
log_file = f"{running_dir}/logs/pdab.log"
open(log_file, 'a').close()
# Configure logging
logFormatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s] %(message)s")
logger = logging.getLogger('main')
logger.setLevel(logging.INFO)
fileHandler = logging.FileHandler(log_file)
fileHandler.setFormatter(logFormatter)
logger.addHandler(fileHandler)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
logger.addHandler(consoleHandler)
logger = setup_logger('main')
# Example usage
logger.info("Logging initialized successfully.")
@@ -43,14 +24,19 @@ ng_threshold = None
### Core functions
def load_opus():
logger.info(f"Running dir: '{running_dir}'")
processor = platform.machine()
logger.info(f"Processor: {processor}")
logger.info(f'OS: {os.name}')
if os.name == 'nt':
if os.name == 'nt':
opus_path = f'{running_dir}/opus/libopus_amd64.dll' if processor == "AMD64" else None
else:
opus_path = f'{running_dir}/opus/libopus_aarcch64.so' if processor == "aarch64" else f'{running_dir}/opus/libopus_armv7l.so'
logger.debug(f"Opus path: '{opus_path}'")
logger.info(f"Opus path: '{opus_path}'")
if opus_path:
opus.load_opus(opus_path)
logger.info(f"Loaded OPUS library from {opus_path}")
@@ -85,6 +71,7 @@ async def join_voice_channel(channel_id):
logging.error(e)
logging.info('error encountered')
async def leave_voice_channel(guild_id):
guild = await client.fetch_guild(guild_id)
logger.info(f"Leaving voice channel in guild {guild}")
@@ -198,19 +185,14 @@ async def on_ready():
logger.info("Loading OPUS library")
load_opus()
if not opus.is_loaded():
return
logger.info(opus.is_loaded())
# Send update to socket server
try:
if opus.is_loaded():
logger.info('Emitting to the server')
await sio.emit('discord_ready', {'message': 'Discord bot is ready'})
except Exception as e:
logger.error(f"Error emitting to the server: {e}")
logger.info('Server not ready yet')
await sio.emit('discord_ready', {'message': 'Discord bot is ready'})
async def main(args):
async def start_bot(args):
global client, device_id, ng_threshold
# Connect to the WebSocket server
@@ -241,6 +223,13 @@ def parse_arguments():
if __name__ == "__main__":
args = parse_arguments()
logger.info("Arguments: %s", args)
asyncio.run(main(args))
try:
args = parse_arguments()
logger.info("Arguments: %s", args)
# Create an event loop
loop = asyncio.get_event_loop()
# Run the start_bot function within the event loop
loop.run_until_complete(start_bot(args))
except Exception as e:
logger.error(e)
logger.warning("Exiting now...")