mirror of
https://github.com/SpudGunMan/meshing-around.git
synced 2026-07-06 09:51:24 +02:00
StoreForward
This commit is contained in:
@@ -31,6 +31,7 @@ other features
|
||||
- `wx` and `wxc` returns local weather forecast, NOAA data source (wxc is metric value)
|
||||
- `wxa` and `wxalert` returns NOAA alerts. short title or expanded details
|
||||
- `joke` tells a joke
|
||||
- `messages` Replay the last messages heard, like Store and Forward
|
||||
|
||||
## Install
|
||||
- Clone the project with `git clone https://github.com/spudgunman/meshing-around`
|
||||
@@ -69,7 +70,8 @@ enabled = False
|
||||
|
||||
[general]
|
||||
DadJokes = True
|
||||
StoreFoward = True
|
||||
StoreForward = True
|
||||
StoreLimit = 3 # The number of StoreForward messages to retain
|
||||
```
|
||||
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ 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
|
||||
DadJokes = True
|
||||
StoreForward = True
|
||||
StoreLimit = 3
|
||||
|
||||
[bbs]
|
||||
enabled = True
|
||||
|
||||
+13
-1
@@ -7,7 +7,7 @@ import time # for sleep, get some when you can :)
|
||||
from pubsub import pub # pip install pubsub
|
||||
from modules.system import *
|
||||
|
||||
def auto_response(message, snr, rssi, hop, message_from_id):
|
||||
def auto_response(message, snr, rssi, hop, message_from_id, channel_number):
|
||||
#Auto response to messages
|
||||
if "ping" in message.lower():
|
||||
#Check if the user added @foo to the message
|
||||
@@ -37,6 +37,18 @@ def auto_response(message, snr, rssi, hop, message_from_id):
|
||||
bot_response = "MOTD Set to: " + MOTD
|
||||
else:
|
||||
bot_response = MOTD
|
||||
elif "messages" in message.lower():
|
||||
response = ""
|
||||
for msgH in msg_history:
|
||||
# check if the message is from the same channel
|
||||
if msgH[2] == channel_number or msgH[2] == DEFAULT_CHANNEL:
|
||||
# consider message safe to send
|
||||
response += f"\n{msgH[0]}: {msgH[1]}"
|
||||
|
||||
if len(response) > 0:
|
||||
bot_response = "Message History:" + response
|
||||
else:
|
||||
bot_response = "No messages in history"
|
||||
elif "bbshelp" in message.lower():
|
||||
bot_response = bbs_help()
|
||||
elif "cmd" in message.lower():
|
||||
|
||||
+8
-8
@@ -8,7 +8,6 @@ from datetime import datetime
|
||||
import configparser
|
||||
|
||||
# Global Variables
|
||||
# system variables
|
||||
trap_list = ("ping", "pinging", "ack", "testing", "test", "pong", "motd", "cmd", "lheard", "sitrep")
|
||||
help_message = "CMD?: ping, motd, sitrep"
|
||||
|
||||
@@ -26,7 +25,7 @@ if config.sections() == []:
|
||||
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',
|
||||
'DadJokes': 'True', 'StoreForward': 'True'}
|
||||
'DadJokes': 'True', 'StoreForward': 'True', 'StoreLimit': '3'}
|
||||
config['bbs'] = {'enabled': 'True', 'bbsdb': 'bbsdb.pkl'}
|
||||
config['location'] = {'enabled': 'True','lat': '48.50', 'lon': '-123.0'}
|
||||
config['solar'] = {'enabled': 'True'}
|
||||
@@ -39,6 +38,7 @@ 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
|
||||
storeFlimit = config['general'].getint('StoreLimit', 3) # limit of messages to store for Store and Forward
|
||||
|
||||
RESPOND_BY_DM_ONLY = config['general'].getboolean('respond_by_dm_only', True)
|
||||
DEFAULT_CHANNEL = config['general'].getint('defaultChannel', 0)
|
||||
@@ -186,7 +186,7 @@ def onReceive(packet, interface):
|
||||
if messageTrap(message_string):
|
||||
print(f"{log_timestamp()} Received DM: {message_string} on Channel: {channel_number} From: {get_name_from_number(message_from_id)}")
|
||||
# respond with DM
|
||||
send_message(auto_response(message_string, snr, rssi, hop, message_from_id), channel_number, message_from_id)
|
||||
send_message(auto_response(message_string, snr, rssi, hop, message_from_id, channel_number), channel_number, message_from_id)
|
||||
else:
|
||||
# respond with welcome message on DM
|
||||
print(f"{log_timestamp()} Ignoring DM: {message_string} From: {get_name_from_number(message_from_id)}")
|
||||
@@ -197,7 +197,7 @@ def onReceive(packet, interface):
|
||||
print(f"{log_timestamp()} Received On Channel {channel_number}: {message_string} From: {get_name_from_number(message_from_id)}")
|
||||
if RESPOND_BY_DM_ONLY:
|
||||
# respond to channel message via direct message
|
||||
send_message(auto_response(message_string, snr, rssi, hop, message_from_id), channel_number, message_from_id)
|
||||
send_message(auto_response(message_string, snr, rssi, hop, message_from_id, channel_number), channel_number, message_from_id)
|
||||
else:
|
||||
# or respond to channel message on the channel itself
|
||||
if channel_number == DEFAULT_CHANNEL:
|
||||
@@ -205,14 +205,14 @@ def onReceive(packet, interface):
|
||||
print(f"{log_timestamp()} System: Warning spamming default channel not allowed. sending DM to {get_name_from_number(message_from_id)}")
|
||||
|
||||
# respond to channel message via direct message
|
||||
send_message(auto_response(message_string, snr, rssi, hop, message_from_id), channel_number, message_from_id)
|
||||
send_message(auto_response(message_string, snr, rssi, hop, message_from_id, channel_number), channel_number, message_from_id)
|
||||
else:
|
||||
# respond to channel message on the channel itself
|
||||
send_message(auto_response(message_string, snr, rssi, hop, message_from_id), channel_number)
|
||||
send_message(auto_response(message_string, snr, rssi, hop, message_from_id, channel_number), channel_number)
|
||||
else:
|
||||
# add the message to the message history but limit it to 5 messages
|
||||
# add the message to the message history but limit
|
||||
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
if len(msg_history) < 5:
|
||||
if len(msg_history) < storeFlimit:
|
||||
msg_history.append((get_name_from_number(message_from_id), message_string, channel_number, timestamp))
|
||||
else:
|
||||
msg_history.pop(0)
|
||||
|
||||
Reference in New Issue
Block a user