Files
Discord-Radio-Bot/main.py

141 lines
4.6 KiB
Python

import logging
import os
import time
import bot
import argparse
import BotResources
# Jorn
#token = 'OTE1MDY0OTk2OTk0NjMzNzI5.YaWKsA.Y9yaCGg_VXRL_qQVbs05vo7gSAc'
# Greada
#token = 'NzU2MzI3MjcxNTk3NDczODYz.X2QOqQ.LVLj2b-RXQzPmhNuBC1eGFMcYls'
# Brent
#token = OTQzNzQyMDQwMjU1MTE1MzA0.Yg3eRA.ZxEbRr55xahjfaUmPY8pmS-RHTY
#name = "VoiceMeeter Output"
LOGGER = logging.getLogger("Discord_Radio_Bot.Main")
class BotDeviceNotFound(Exception):
def __init__(self, device):
LOGGER.debug(f"Unable to find the device: {device}")
try:
os.remove('./config.ini')
except OSError:
LOGGER.warning("Config file not found, restarting.")
#os.execv(__file__, sys.argv)
def main(**passed_config):
# Don't create a config if the user passed parameters
if len(passed_config.keys()) == 0:
LOGGER.info('Checking config file...')
if not BotResources.check_if_config_exists():
LOGGER.warning("No config file exists, please enter this information now")
BotResources.write_config_file(init=True)
config = BotResources.read_config_file()
if not config:
LOGGER.warning("No config file exists, please enter this information now")
BotResources.write_config_file(init=True)
config = BotResources.read_config_file()
# Overwrite config options if they were passed
if len(passed_config.keys()) == 0:
for sub in config:
# checking if key present in other dictionary
if sub in passed_config and passed_config[sub]:
config[sub] = passed_config[sub]
LOGGER.info('Starting Bot...')
discord_bot_client = bot.Bot(Token=config['Bot Token'], Device_ID=config['Device ID'],
Device_Name=config['Device Name'], Mention_Group=config['Mention Group'],
Channel_ID=config['Channel ID'], Handler=config['Handler'])
LOGGER.debug(f"Verifying audio device:\t{config['Device Name']}")
if not discord_bot_client.check_device(_override=bool("Device ID" in passed_config.keys())):
raise BotDeviceNotFound(config['Device Name'])
discord_bot_client.start_bot()
def cmd_arguments():
parser = argparse.ArgumentParser(description='Discord Bot Gang - Premium Discord Bot\n'
'The more you listen, the less you can see')
# Add the arguments
# Arg to override bot token
parser.add_argument('-t', '--token',
metavar='Bot Token',
dest='Bot Token',
type=str,
help='Override saved bot token')
# Arg to override the input device in the config
parser.add_argument('-i', '--input_device_id',
metavar='Device ID',
dest='Device ID',
type=int,
help='Override saved input device')
# Arg to override mention group
parser.add_argument('-m', '--mention',
metavar='Mention Group',
dest='Mention Group',
type=str,
help='Override saved mention group')
# Arg to override default channel to send messages
parser.add_argument('-c', '--channel',
metavar='Channel ID',
dest='Channel ID',
type=int,
help='Override saved sending channel')
# Arg to override handler
parser.add_argument('-u', '--handler',
metavar='Handler',
dest='Handler',
type=str,
help='Override saved SDR handler')
# Arg to save the overridden arguments
#parser.add_argument('-s', '--save',
# metavar='save_overrides',
# dest='save_overrides',
# type=str,
# help='Save the overridden arguments passed')
# Retrieve the args
args = vars(parser.parse_args())
return args
if __name__ == '__main__':
cmd_args = cmd_arguments()
BotResources.init_global_logger()
if not all(cmd_args.values()):
LOGGER.debug("Passed arguments:")
for arg in cmd_args:
if cmd_args[arg]:
LOGGER.debug(f"\t{arg}:\t{cmd_args[arg]}")
try:
LOGGER.info('Starting...')
while True:
try:
main(**cmd_args)
except BotDeviceNotFound:
LOGGER.info("Restarting...")
time.sleep(2)
except KeyboardInterrupt:
LOGGER.error("Exiting...")