From 5759a90df4022405a638d677f5a82e418dd4d0ca Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Sat, 20 Jul 2024 00:30:10 -0700 Subject: [PATCH] cleanup --- mesh_bot.py | 6 ------ modules/system.py | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/mesh_bot.py b/mesh_bot.py index 9da4a24..1d6a5ca 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -5,7 +5,6 @@ import asyncio # for the event loop import time # for sleep, get some when you can :) from pubsub import pub # pip install pubsub -from dadjokes import Dadjoke # pip install dadjokes from modules.system import * def auto_response(message, snr, rssi, hop, message_from_id): @@ -130,11 +129,6 @@ def auto_response(message, snr, rssi, hop, message_from_id): return bot_response -def tell_joke(): - # tell a dad joke, does it need an explanationn :) - dadjoke = Dadjoke() - return dadjoke.joke - def start_rx(): # Start the receive loop pub.subscribe(onReceive, 'meshtastic.receive') diff --git a/modules/system.py b/modules/system.py index 00fc652..91c8a5d 100644 --- a/modules/system.py +++ b/modules/system.py @@ -9,8 +9,8 @@ import configparser # Global Variables # system variables -trap_list = ("ping", "pinging", "ack", "testing", "test", "pong", "motd", "cmd", "lheard", "sitrep", "joke") -help_message = "CMD?: ping, motd, sitrep, joke" +trap_list = ("ping", "pinging", "ack", "testing", "test", "pong", "motd", "cmd", "lheard", "sitrep") +help_message = "CMD?: ping, motd, sitrep" # Read the config file config = configparser.ConfigParser() @@ -25,7 +25,8 @@ if config.sections() == []: print(f"System: Error reading config file: {config_file} is empty or does not exist.") config['interface'] = {'type': 'serial', 'port': "/dev/ttyACM0", 'hostname': '', 'mac': ''} config['general'] = {'respond_by_dm_only': 'True', 'defaultChannel': '0', 'motd': 'Thanks for using MeshBOT! Have a good day!', - 'welcome_message': 'MeshBot, here for you like a friend who is not. Try sending: ping @foo or, cmd'} + 'welcome_message': 'MeshBot, here for you like a friend who is not. Try sending: ping @foo or, cmd', + 'DadJokes': 'True', 'StoreForward': 'True'} config['bbs'] = {'enabled': 'True', 'bbsdb': 'bbsdb.pkl'} config['location'] = {'enabled': 'True','lat': '48.50', 'lon': '-123.0'} config['solar'] = {'enabled': 'True'} @@ -37,6 +38,7 @@ interface_type = config['interface'].get('type', 'serial') port = config['interface'].get('port', '') hostname = config['interface'].get('hostname', '') mac = config['interface'].get('mac', '') +msg_history = [] # message history for the store and forward feature RESPOND_BY_DM_ONLY = config['general'].getboolean('respond_by_dm_only', True) DEFAULT_CHANNEL = config['general'].getint('defaultChannel', 0) @@ -59,27 +61,40 @@ else: exit() # Solar Conditions Configuration -solar_conditions_enabled = config['solar'].getboolean('enabled', True) +solar_conditions_enabled = config['solar'].getboolean('enabled', False) if solar_conditions_enabled: from modules.solarconditions import * # from the spudgunman/meshing-around repo trap_list = trap_list + trap_list_solarconditions # items hfcond, solar, sun, moon help_message = help_message + ", sun, hfcond, solar, moon, tide" # Location Configuration -location_enabled = config['location'].getboolean('enabled', True) +location_enabled = config['location'].getboolean('enabled', False) if location_enabled: from modules.locationdata import * # from the spudgunman/meshing-around repo trap_list = trap_list + trap_list_location # items tide, whereami, wxc, wx help_message = help_message + ", whereami, wx, wxc, wxa" # BBS Configuration -bbs_enabled = config['bbs'].getboolean('enabled', True) +bbs_enabled = config['bbs'].getboolean('enabled', False) bbsdb = config['bbs'].get('bbsdb', 'bbsdb.pkl') if bbs_enabled: from modules.bbstools import * # from the spudgunman/meshing-around repo trap_list = trap_list + trap_list_bbs # items bbslist, bbspost, bbsread, bbsdelete, bbshelp help_message = help_message + ", bbslist, bbshelp" +# Dad Jokes Configuration +dad_jokes_enabled = config['general'].getboolean('DadJokes', False) +if dad_jokes_enabled: + from dadjokes import Dadjoke # pip install dadjokes + trap_list = trap_list + ("joke") + help_message = help_message + ", joke" + +# Store and Forward Configuration +store_forward_enabled = config['general'].getboolean('StoreForward', False) +if store_forward_enabled: + trap_list = trap_list + ("messages") + help_message = help_message + ", messages" + #Get the node number of the device, check if the device is connected try: myinfo = interface.getMyNodeInfo() @@ -195,6 +210,14 @@ def onReceive(packet, interface): # respond to channel message on the channel itself send_message(auto_response(message_string, snr, rssi, hop, message_from_id), channel_number) else: + # add the message to the message history but limit it to 5 messages + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + if len(msg_history) < 5: + msg_history.append((get_name_from_number(message_from_id), message_string, channel_number, timestamp)) + else: + msg_history.pop(0) + msg_history.append((get_name_from_number(message_from_id), message_string, channel_number, timestamp)) + print(f"{log_timestamp()} System: Ignoring incoming channel {channel_number}: {message_string} From: {get_name_from_number(message_from_id)}") except KeyError as e: @@ -312,6 +335,11 @@ def send_message(message, ch, nodeid=0): print (f"{log_timestamp()} System: Sending: {message} To: {get_name_from_number(nodeid)}") interface.sendText(text=message, channelIndex=ch, destinationId=nodeid) +def tell_joke(): + # tell a dad joke, does it need an explanationn :) + dadjoke = Dadjoke() + return dadjoke.joke + def messageTrap(msg): # Check if the message contains a trap word message_list=msg.split(" ")