diff --git a/bbstools.py b/bbstools.py index 396adcd..a855e19 100644 --- a/bbstools.py +++ b/bbstools.py @@ -3,7 +3,56 @@ from dadjokes import Dadjoke # pip install dadjokes +#global message list, later we will use a database on disk +bbs_messages = [] + def tell_joke(): # tell a dad joke, does it need an explanationn :) dadjoke = Dadjoke() - return dadjoke.joke \ No newline at end of file + return dadjoke.joke + +def bbs_help(): + # help message + return "Commands: 'bbslist', 'bbspost $subject #message', 'bbsread #', 'bbsdelete #'" + +def bbs_list_messages(): + # return a string with new line for each message subject in the list bbs_messages + message_list = "" + for message in bbs_messages: + # message[0] is the messageID, message[1] is the subject + message_list += "Msg #" + str(message[0]) + " " + message[1] + "\n" + + #last newline removed + message_list = message_list[:-1] + return message_list + +def bbs_delete_message(messageID = 0): + # delete a message from the bbsdb + if messageID > 0: + bbs_messages.pop(messageID - 1) + #reset the messageID + for i in range(len(bbs_messages)): + bbs_messages[i][0] = i + 1 + + return "Msg #" + str(messageID) + " deleted." + else: + return "Please specify a message number to delete." + +def bbs_post_message(subject, message): + # post a message to the bbsdb and assign a messageID + messageID = len(bbs_messages) + 1 + + #print (f"System: messageID: {messageID}, subject: {subject}, message: {message}") + # append the message to the list + bbs_messages.append([messageID, subject, message]) + return "Message posted. ID is: " + str(messageID) + +def bbs_read_message(messageID = 0): + if messageID > 0: + message = bbs_messages[messageID - 1] + return f"Msg #{message[0]}\nMsg Body: {message[2]}" + else: + return "Please specify a message number to read." + + + diff --git a/mesh-bot.py b/mesh-bot.py index e2e39fc..ef195f6 100755 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -19,7 +19,8 @@ interface = meshtastic.serial_interface.SerialInterface() #serial interface #interface=meshtastic.ble_interface.BLEInterface("AA:BB:CC:DD:EE:FF") # BLE interface #A list of strings to trap and respond to -trap_list = ("ping","ack","testing","pong","motd","help","sun","solar","hfcond","lheard","sitrep","whereami","tide","moon","wx","joke") +trap_list = ("ping","ack","testing","pong","motd","help","sun","solar","hfcond","lheard","sitrep", \ + "whereami","tide","moon","wx","joke","bbslist","bbspost","bbsread","bbsdelete","bbshelp") welcome_message = "MeshBot, here for you like a friend who is not. Try sending: ping @foo or, help" help_message = "Commands are: ack, hfcond, joke, Lheard, moon, motd, ping, solar, sun, tide, whereami, wx" @@ -95,6 +96,38 @@ def auto_response(message, snr, rssi, hop, message_from_id): bot_response = weather elif "joke" in message.lower(): bot_response = tell_joke() + elif "bbslist" in message.lower(): + bot_response = bbs_list_messages() + elif "bbspost" in message.lower(): + #Check if the user added a subject to the message + if "$" in message: + subject = message.split("$")[1].split("#")[0] + subject = subject.rstrip() + if "#" in message: + message = message.split("#")[1] + message = message.rstrip() + + bot_response = bbs_post_message(subject,message) + else: + bot_response = "example: bbspost $subject #message" + else: + bot_response = "Please add a subject to the message. ex: bbspost $subject #message" + elif "bbsread" in message.lower(): + #Check if the user added a message number to the message + if "#" in message: + messageID = int(message.split("#")[1]) + bot_response = bbs_read_message(messageID) + else: + bot_response = "Please add a message number ex: bbsread #14" + elif "bbsdelete" in message.lower(): + #Check if the user added a message number to the message + if "#" in message: + messageID = int(message.split("#")[1]) + bot_response = bbs_delete_message(messageID) + else: + bot_response = "Please add a message number ex: bbsdelete #14" + elif "bbshelp" in message.lower(): + bot_response = bbs_help() else: bot_response = "I'm sorry, I'm afraid I can't do that."