From aebb9e3c204e2b00fdadb0cd34a1d933207d886e Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Sun, 19 Oct 2025 12:48:19 -0700 Subject: [PATCH] cleanup --- mesh_bot.py | 56 ++--------------------------------------------- modules/system.py | 53 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 54 deletions(-) diff --git a/mesh_bot.py b/mesh_bot.py index ae0f948..8ab4cba 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -146,8 +146,9 @@ def auto_response(message, snr, rssi, hop, pkiStatus, message_from_id, channel_n # Check if user is already playing a game playing, game = isPlayingGame(message_from_id)[0], isPlayingGame(message_from_id)[1] - # Block restricted commands if not DM, or if already playing a game + # Block restricted commands if not DM if (cmds[0]['cmd'] in restrictedCommands and not isDM) or (cmds[0]['cmd'] in restrictedCommands and playing): + logger.debug(f"System: Bot restricted Command:{cmds[0]['cmd']} From: {get_name_from_number(message_from_id)} isDM:{isDM} playing:{playing}") if playing: bot_response = f"🤖You are already playing {game}, finish that first." else: @@ -1339,22 +1340,6 @@ def handle_whois(message, deviceID, channel_number, message_from_id): msg += f"Loc: {where_am_i(str(location[0]), str(location[1]))}" return msg -def check_and_play_game(tracker, message_from_id, message_string, rxNode, channel_number, game_name, handle_game_func): - global llm_enabled - - for i in range(len(tracker)): - # Use 'userID' for DopeWars, 'nodeID' for others (including Survey) - id_key = 'userID' if game_name == "DopeWars" else 'nodeID' - - if tracker[i].get(id_key) == message_from_id: - last_played_key = 'last_played' if 'last_played' in tracker[i] else 'time' - if tracker[i].get(last_played_key) > (time.time() - GAMEDELAY): - if llm_enabled: - logger.debug(f"System: LLM Disabled for {message_from_id} for duration of {game_name}") - send_message(handle_game_func(message_string, message_from_id, rxNode), channel_number, message_from_id, rxNode) - return True, game_name - return False, "None" - gameTrackers = [ (dwPlayerTracker, "DopeWars", handleDopeWars) if 'dwPlayerTracker' in globals() else None, (lemonadeTracker, "LemonadeStand", handleLemonade) if 'lemonadeTracker' in globals() else None, @@ -1369,43 +1354,6 @@ gameTrackers = [ #quiz does not use a tracker (quizGamePlayer) always active ] -def isPlayingGame(message_from_id): - global gameTrackers - trackers = gameTrackers.copy() - playingGame = False - game = "None" - - trackers = [tracker for tracker in trackers if tracker is not None] - - for tracker, game_name, handle_game_func in trackers: - for i in range(len(tracker)-1, -1, -1): # iterate backwards for safe removal - id_key = 'userID' if game_name == "DopeWars" else 'nodeID' - id_key = 'id' if game_name == "Survey" else id_key - if tracker[i].get(id_key) == message_from_id: - last_played_key = 'last_played' if 'last_played' in tracker[i] else 'time' - if tracker[i].get(last_played_key, 0) > (time.time() - GAMEDELAY): - playingGame = True - game = game_name - break - if playingGame: - break - - return playingGame, game - -def checkPlayingGame(message_from_id, message_string, rxNode, channel_number): - global gameTrackers - trackers = gameTrackers.copy() - playingGame = False - game = "None" - - trackers = [tracker for tracker in trackers if tracker is not None] - - for tracker, game_name, handle_game_func in trackers: - playingGame, game = check_and_play_game(tracker, message_from_id, message_string, rxNode, channel_number, game_name, handle_game_func) - if playingGame: - break - return playingGame - def onReceive(packet, interface): global seenNodes, msg_history, cmdHistory # Priocess the incoming packet, handles the responses to the packet with auto_response() diff --git a/modules/system.py b/modules/system.py index 44cd900..648f206 100644 --- a/modules/system.py +++ b/modules/system.py @@ -1826,6 +1826,59 @@ def get_sysinfo(nodeID=0, deviceID=1): sysinfo += f"📊{stats}" return sysinfo +def isPlayingGame(message_from_id): + global gameTrackers + trackers = gameTrackers.copy() + playingGame = False + game = "None" + + trackers = [tracker for tracker in trackers if tracker is not None] + + for tracker, game_name, handle_game_func in trackers: + for i in range(len(tracker)-1, -1, -1): # iterate backwards for safe removal + id_key = 'userID' if game_name == "DopeWars" else 'nodeID' + id_key = 'id' if game_name == "Survey" else id_key + if tracker[i].get(id_key) == message_from_id: + last_played_key = 'last_played' if 'last_played' in tracker[i] else 'time' + if tracker[i].get(last_played_key, 0) > (time.time() - GAMEDELAY): + playingGame = True + game = game_name + break + if playingGame: + break + + return playingGame, game + +def checkPlayingGame(message_from_id, message_string, rxNode, channel_number): + global gameTrackers + trackers = gameTrackers.copy() + playingGame = False + game = "None" + + trackers = [tracker for tracker in trackers if tracker is not None] + + for tracker, game_name, handle_game_func in trackers: + playingGame, game = check_and_play_game(tracker, message_from_id, message_string, rxNode, channel_number, game_name, handle_game_func) + if playingGame: + break + return playingGame + +def check_and_play_game(tracker, message_from_id, message_string, rxNode, channel_number, game_name, handle_game_func): + global llm_enabled + + for i in range(len(tracker)): + # Use 'userID' for DopeWars, 'nodeID' for others (including Survey) + id_key = 'userID' if game_name == "DopeWars" else 'nodeID' + + if tracker[i].get(id_key) == message_from_id: + last_played_key = 'last_played' if 'last_played' in tracker[i] else 'time' + if tracker[i].get(last_played_key) > (time.time() - GAMEDELAY): + if llm_enabled: + logger.debug(f"System: LLM Disabled for {message_from_id} for duration of {game_name}") + send_message(handle_game_func(message_string, message_from_id, rxNode), channel_number, message_from_id, rxNode) + return True, game_name + return False, "None" + async def BroadcastScheduler(): # handle schedule checks for the broadcast of messages while True: