From 1a930594b3e610c993eb05219e406cabc9dcfeb6 Mon Sep 17 00:00:00 2001 From: Logan Cusano Date: Tue, 28 Dec 2021 01:49:43 -0500 Subject: [PATCH] Added commands to change radio parameters while running --- bot.py | 87 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 74 insertions(+), 13 deletions(-) diff --git a/bot.py b/bot.py index f1f5eea..e70c047 100644 --- a/bot.py +++ b/bot.py @@ -1,4 +1,5 @@ import os +import re import time import discord import sound @@ -20,6 +21,17 @@ class Bot(commands.Bot): self.Default_Mention_Group = kwargs['Mention_Group'] self.Devices_List = sound.query_devices().items() + # Init radio parameters + self.freq = "104.7M" + self.freq_re = re.compile('(\d+\.?\d*M)') + self.mode = "wbfm" + self.gain = 40 + self.squelch = 0 + self.sample_rate = "" + self.sample_rate_re = re.compile('(\d+\.?\d*k)') + + + # Init SDR Variables self.sdr_process = None self.system_os_type = None self.sdr_output_process = None @@ -71,6 +83,59 @@ class Bot(commands.Bot): await ctx.voice_client.disconnect() await self.change_presence(activity=discord.Game(name=f"@me"), status=discord.Status.idle) + @self.command(name='chfreq', help="Use this command to change the frequency the bot is listening to. Note: 'M'" + "is required\nExmple command: '@ chfreq <['fm', 'wbfm']> ", + brief="Changes radio frequency") + async def chfreq(ctx, mode: str, freq: str, member: discord.Member = None): + possible_modes = ['wbfm', 'fm'] + member = member or ctx.author.display_name + + if self.freq_re.search(freq): + self.freq = freq + if mode in possible_modes: + self.mode = mode + await ctx.send(f"Ok {member}, I have changed the mode to {self.mode} and frequency to {self.freq}") + if self.sdr_started: + self.start_sdr() + else: + await ctx.send(f"{member}, {mode} is not valid. You may only enter 'fm' or 'wbfm'") + else: + await ctx.send(f"{member}, {freq} is not valid. please refer to the help page '@ help chfreq'") + + @self.command(name='chsquelch', help="Use this command to change the squelch for the frequency" + "the bot is listening to", + brief="Changes radio squelch") + async def chsquelch(ctx, squelch: int, member: discord.Member = None): + member = member or ctx.author.display_name + self.squelch = squelch + await ctx.send(f"Ok {member}, I have changed the squelch to {self.squelch}") + + if self.sdr_started: + self.start_sdr() + + @self.command(name='chgain', help="Use this command to change the radio gain for the bot", + brief="Changes radio gain") + async def chgain(ctx, gain: int, member: discord.Member = None): + member = member or ctx.author.display_name + self.gain = gain + await ctx.send(f"Ok {member}, I have changed the gain to {self.gain}") + + if self.sdr_started: + self.start_sdr() + + @self.command(name='chbw', help="Use this command to change the center frequency bandwidth for the bot." + "Note: 'k' is required\nExample Command: '@ chbw