#meshing-around BBS/utility BOT
1 messages · Page 2 of 1
I can't get it to work
It's enabled, but returns no messages
Does it only work on non public channels? (I only have longfast setup for now)
Also, do you mind if I tidy up some of the notation/special characters used in trap phrases?
And the help text?
It’s a word trap (if word, trap), are there special characters? (I’m not sure what your referencing)
The help text is just a string
The public channel is not spammed by default but it should say “anti spam” sending via DM
It just says no messages
I meant the $ / # / @
That segments the message into specifically treated parts
Yea ping and BBS actions
E.g. the @ in the ping implies it sends it to someone else, when in fact it "copies" by echoing
It would be better with a #
But I didn't really want to do it 'live' right now, more just sit and puzzle it out and make suggestions via pull request
But I can if you want?
the idea is I am pinging you “at” this location
So the bot responds
It could be a comma,
Or it could be the word “echo”
Are you sending a few first? I can’t replicate this on a fresh pull it’s enabled by default
That's kind of what I was meta-thinking: just clarify it all for the new user
Yep, I send out a few messages first.
At a minimum it should be reporting a few "ping" messages
I'll do a fresh install in a bit.
It will not report any bot messages
Ping won’t be added to the messages list
Same with LLM consumption if I recall
If the Bot consumes it I don’t log it to messages basically
As I assume it’s “nothing anyone else cares about”
Yea I just loaded a copy and it’s on by default and working fine it seems
I'll do a fresh install and make a test channel, too
Maybe I'm doing something weird
Did you play with source? Try a “git restore .” In the directory and it will reset to git code
If using public it will respond on DM with the messages
No “need” for extra channels anyway
Kk, once the agents of chaos are asleep, I'll have a play.
It worked for me when I tested it.
It's working for me
I think the fact that I;ve been repeatedly shutting it down and restarting it, plus the fact that almost every message is triggering the bot in some way must have been meaning it had nothing to say
I've made a few changes in my fork: https://github.com/Nestpebble/meshing-around/
One thing I cannot get to work is using the BBS admin list as an admin list for changhing the MOTD:
https://github.com/Nestpebble/meshing-around/blob/453cfbb306a63e8d1b0eff0717f541fd93a02a0d/mesh_bot.py#L88
it's only a small amount of stuff, but it's been a crappy evening
anyway, hope some of it looks sensible tomorrow morning...
Haha yea the same for me
MOTD can be set by anyone actually
Yea looks cool, one thing I’m curious about is the split delay, why is there a delay added? (Did you have a reason for adding the delay)
I was specifically not delaying it for how it sends the info in one lump to the node it handles the airtime better for packet delivery order
If you push this (it’s good changes)
Can you set the MOTD value to allow anyone when the list is empty for admin.
And the split can you default to zero, but I’m also wondering where delaying the values sent to the node is useful I found it to be very problematic to put a wait here
I saw your comment and commits for trying to find admin, check out around line 47 of bbs module and just replicate that mechanic?
If you really get stuck when I am back at it I can give a specific answer if needed
Dopewars is 90%done, I need to convert one last array into player tracking as its single player right now.
🍋 code im using to port should go fast
So my next release I hope will be a late night double feature
While goofin’ I remember more wacky games from the past transposing from the back of magazines, I got a third which if the idea works .. might be a triple feature of fun
I tried that, but it seems to transform message_from_id as fromNode and I cant seem to get it to work
I'm adding debugs in a min
It’s extrapolated from fromNode.
DeviceID, is the node, for multi radio
The whole multi node and interface stuff could be better suited in a class method but, here we are
right, apparently both message_from_id and bbs_admin_list needed to be transformed to a string for the comparison to work
along the way I've added a whoami trap word
Bah
I give up
I can't get it to check if bbs_admin_list is blank.
And I keep breaking it when I do different things.
And I'm about 44 commits deep
All the rest is ok, I think
Oh, I tried to add a motd? catchphrase, to see if we could shoehorn a help message per handler, but it doesn't like it.
*trap word
But I do like catchphrase as a concept
Also, the definitions are a nightmare throughout!
DeviceID, rxnode, fromNode
All the same thing
Didn’t understand this?
Yea that should be fixed it’s wonky
Added it to a todo
Less is more; I was looking at all the logic your adding to MOTD, it’s such a basic function, basically the bbsmessage replaced it entirely, it seems we are remaking BBS module here
Remove all the extra stuff?
Do you want ping.py to have some BBS message or enhanced MOTD it’s easy to port
I’m just not sure why MOTD needs a help
And the “if blank admin” logic if it’s not working just cut it out
Push in the other stuff and I can hammer it out
Well said, thanks for the insight.
This entire project “meshing around” was basically to see how well this works as a format in meshtastic
Ideally a full rewrite after the blocks are set
I would like to have proper interface.value
Interface.isopen
The games I’m working on now was all I wanted and the rest sort of happened out of necessity for game play haha
So if it looks like I write the code to fill a function idea and two days later a totally new idea .. yea it’s how it’s going
Yep, I get that - I'm assuming it's got blocks from other projects?
Hence the odd notation?
Not a bunch; the recognition, calls out the areas I pulled raw concepts from
The odd notation is really a bad practice I never corrected, this is the first project I allowed co-pilot to be a part of and one issue I have is my way and it’s way to write are slightly different
So your reading a mix of my old way and it’s new way
ah, ok
I'll be honest, most of my "programming" experience is excel spreadsheets and extended blink.ino
I kickstarted blink, good project!
so switching between C(++?) and python is weirding me out a bit
Haha yea, them white spaces are a killer sometimes
And my Python is not ideal I really do this as a hobby
(But it works!)
yeah, I'm trying to focus on a goal rather than getting hung up on the learning - it's not my day job at all
yep - function over form every time!
basically, when other people locally started popping up on Meshtastic, the main complaint was that there wasn't much to do with it
basically, the joke was that most of the meshtastic chat went over discord
and then people get bored, don't check their nodes, and its dead internet syndrome
you see a full nodeDB, but noone answers so... you switch off
My hobby box is full of these ideas haha
I like this idea of a meshbot that people "find"
that does stuff
hence me getting a bit hung up on the MOTD and access control
its a really basic function
but I like the idea of a few scheduled broadcasts and things
Use ping.py to goof with enhancing MOTD less code to get lost in
The MOTD idea was the first bit of code I wrote after ping
I also like the idea of the geocache guidance - go to a location, and it will respond differently than before
So it’s old stuff, the bbs .. haha MOTD didn’t work for some time oops
No worries, I kinda wanna enhance that for game use
yep
I was looking at the mobile apps and thinking if they would respect some kind of markup
liek how online chatbots have options to pick from
iOS will take one or two
yeah, android highlights some numbers, but not for passing as a response
the split message interval thing is useful to me to improve the overall reliability, btw. Once I put that in, the better radios started getting their messages out better
What hardware?
Ahh nice! Yea I can understand where that would be handy, I was actually surprised it worked like it did but I had constant issues over a hop with (at the time) weather packets (for NOAA) are three “packets” and they would arrive out of order when a delay was there
ah, the delay is still a problem
but I thought putting a n/x on the split messages might help there
I hear ya, but I didn’t dig further for enjoyment of my own puzzle. Time has been an issue lately of discussions.
My assumptions are the stream reader considers the injest as a single input
If delayed there is natural break to process and keep streaming
ah, this is above my paygrade
I just assumed the packet queue was getting full, and it wasn't getting chance to check for implicit acks that would help reliability
it doesn't help that longfast has made a comeback
mediumfast was so much quicker
and easier on the airtime
now each 120 character message is taking like a second to broadcast
As a ham, waiting for data is commonly the hobby
They seem to sort out every time, my dev area is a total mess with nodes all over so very congested air space.
I also have a really large local mesh and I normally have a mountain top node up for some really good long distance meshing
able to test via hop with high consistency, the ping bot was to help me fine tune coverage at the time
I have been working on medium fast for my current dev stuff and I feel like there are more missing packets vs LF
Yeah, but you can ask for them again much quicker 😉
btw, i havent updated in 2-3 weeks, but the TCP connection to the virtual meshtasticd node has been up and stable for 2-3 weeks!
no intervention needed
Nice
Our mesh here on Maui is so quiet I'm thinking of turning off DM only so that people can see it working.
Nice, also need to disable the “antispam”
It’s in the settings.py
Sort of a fuse, to stop accidents if you will
git pull && git checkout games
I will move to main after some testing
It’s basic; could use some ice melting and ants stealing sugar but .. another day
I’m gonna hold games on a “alpha” (games) branch for a bit while ironing out some things (just got some good fixes in)
High score is messed up on dopewars possibly still
I have been working on another game all day and was not keeping good change control and wasted a day of work
Are you likely to refactor (is that the right word?) this at some point, so the different modules are truly modularised?
I'm just looking down the list, and it's getting looooooooooong
and you've got things in several places
Not sure, the product is working well as it sits, but modular in the sense that the core would have some generic API for anyone to write a plugin? You can disable modules today, what defines modularity?
Aside from some best practice Python skills the product seems stable and functional so ..
Unless there is a LOT of demand… or someone has a great idea for a plugin setup (I know the discord bot project is working to try this)
If you have some suggestion I’m all ears but, I have no immediate plans to refactor much but some confusing values for the device/nodeID
I could see v2 or whatever being a rewrite with more LLM and a tracker database and more focus with ability to have a translation file
I do think the modules today could be quickly adapted in that or elsewhere
It is very good as it stands, that's true.
I just had an early morning thought that it would be possible to move quite a lot of the trap word and response off to another .ini that could be arbitrarily long and customised
But there are other modules which might serve better, e.g. the BBS with tweaked commands
I could make a good document showing the flow of stuff in the code?
Is the _handler() functions not good enough to customize as you want? Sort of like the scheduler at some stage the power of logic is in .py vs a complex .ini for whatever someone may want to do. so extending any command would be processed/sanitized and sent to the bbs.mod function needed (and the .mod enhanced as needed for new behaviors)
The case selection menu, _handler() is much cleaner vs a huge elif statement
The basic flow is all messages are quickly word searched and if true get passed to the larger auto_responder
The rx loop handles watching the proto from node and its closely tied to auto responder
I have a few tools I haven’t shared but one which could be handy if interest is a janky node emulator I use for roughing in stuff. It fakes input just like the bot/client.node would for prototyping ideas
So when testing out, would this idea work or that game how nice would it port over
Ah, that sounds clever!
How are you operating the games, then? Does it switch to a games mode?
here is the tool in action .. I dont know if this will port yet but it smells like it will, sneak peek
Ok, so you're making a command-line type game, and then feeding the result through Meshtastic?
yea I just hunt for fun python games which may or may not work give it a test and if I can fit it thru my "emulator" it will fit into the meshing-around project
just raw input for quick dev
short answer yes
currently its 8 hours it will hold onto game mode
all of it is in flux still need to set values places easily changed but ..
testing out bugs now anyway
games like LLM are only available in DM mode
LLM in channels is only accessable with 'askai' or with :
I am pondering a multiplayer game or something like holdem but thats another day
all of this 1.0 meshing about is "will it work well"
No, it's really cool
For the fixed mesh, it needs something to make it fun
Something engaging
Not just a portal to discord...
haha thats cool as well! thanks glad its enjoyable code!
I do have some notes for a orginal game idea "golden node" but its sort of a next idea after meshing-about or part of 2.0
Yep, I was tinkering with the proximity detector, and looking at a kind of geocache/treasure hunt thing.
So it sends different messages based on the sender's location.
yea I almost went nuts and added that ability to the bot
but the basic idea works well for the prox alarm so I know it will scale
Wait for hacktober, and take the prize with it?
I was also bothering other folk about trying to low-power it with a milk-v or something
haha I feel I got like 50% of it .. if a construct was neded the lists with data are allready being searched 🙂
just scale into a larger list
get_node_location() and get_closest_nodes() would be worth grabbing out
get_closest_nodes actually returns a list but I am crunching it for the current use
with these two fucntions working (you can dump the device/nodeID or set to 1) you can quicly check against a known lat long[]
here is the handler its in watchdog since it was a async I could toss into easily https://github.com/SpudGunMan/meshing-around/blob/c07f756d67f7ad42aa7dc070063982d0ac780542/modules/system.py#L698
I just published my simulator into etc/ on the games branch.(eventually will make it way to main)
Move it to project root and it will simulate
I spent another day on this silly black jack, I could have written a totally new one by now and should have
Can we have tictactoe and thermonuclear war, plz?
Haha, thermonuclear war for sure
I will 🤔
Tick tac toe I’m not sure how well it plays in mesh
Haha, the game will for sure keep bothering you to keep going
I may even pickle the node number and wait .. patiently for a dial back
Hehe
I'll review my changes and do a fresh pull request this weekend, I think
And once the crappy adjustments I wanted are in, I'll propose another bot, either on ping or a third one.
Btw, does the trap word list filter special characters?
I know it can search the message for $ and #
Nice!
The word list is 1:1 only it traps words it isn’t handling anything else
Just returns bool and if true hands to the autoresponder who’s case command choose word to function actions
Might tag a release soon things should be mostly bug free?
awesome! i'll have to do a pull and see what all i've missed. been on my own python adventure with textual 😉
Ohh looks nice @dusky abyss!
@stone lance I pulled your changes into main, thank you !
If your wondering what needed refactored I tagged you on the commit
Wow, thanks! I didn't actually realise this was possible.
I'm glad you were able to see the sense behind what I was doing. I switched to a local copy, which is utterly borked, but I'll fetch a new copy now.
Did you think the elif "?" in message was a good idea?
Yea I kept in everything you had! @stone lance
The trap word you were only missing this
if whoami_enabled:
trap_list_whoami = ("whoami",)
trap_list = trap_list + trap_list_whoami
help_message = help_message + ", whoami"
Part of the modular bit since this was an internal function it has all the parts for help and trap ()
The admin for MoTd stuff I refactored to
if bbs_admin_list != ['']:
for admin in bbs_admin_list:
if str(message_from_id) == admin:
isAdmin = True
break
else:
isAdmin = True
Yeah, I got lazy at that part - I was using it to debug my nodeIDs
I enhanced the output a bit as well
I was still planning to go back through and add elif "?" In message to add local help
Yeah, I saw that.
You've tidied up quite a bit
Yea just keep editing!
I was trying games, but my kids keep interrupting..
Something I sort of enjoy is the timeout is 8 hours by default and they pause and play just like a text message would
I once had a IGT video game slot thing and really enjoyed playing them as a mindless game, I sort of enjoy it in text message I have found
Should high scores for casino games be saved? (keep them in memory only now)
Is there any use to a “announcer” which would text to speech radio?
Say: It’s not likely the professor knows the island is a movie set
how come "motd ?" works, but "motd?" doesnt?
For the same reason sun works and sunrise isn’t the consumption of a message is chunked into words to be evaluated, see the def messageTrap(msg) in system
It may be worth adding a “help handler”
If ? Found in any Cmd in the cmds list
See around line 65 in bot.py
@stone lance
yep, found it
it chunks it based on " "
so I either add a trap word with ? added, or do as you say
The downside to trapping ? Without checking the cmds list is your going to add a lot of noise possibly
So the ?_handler can refine just a bunch of help commands
Having an option to find ? In channel chat and treat it like a Askai: command would be fun?
Every response would get something
I'm just trying to get it to trap (e.g.) ping? the same way it traps ping without having to add ping? to the trap list as well
but actually, it may be better to just have explicit help requests included
can then capture e.g. ping? and respond with a help message in a consistent way
if it makes sense
I'm messing with the message_list split
trying regular expressions to split it at ? as well as " "
but its not straightforward
fixed it
but now, do we really want it to respond to whereami? the same way as we respond to whereami?
ug
right, gonna commit it now, and think later
No need for regex
Most commands provide help inline
I don’t know if whereami needs explanation after ran
def messageTrap(msg) in system is splitting on spaces for words
It’s the best place to look for and pass true
It’s the important part of ingesting data
Once’s is in there you can enhance parsing cmds list
msg.endswith(“¿")
Pressed a 1.2 release
Bot is 2.5 aware now, whoami will print your public key
a who/last command would be neat
to get a list of who's been talking to the bot, and maybe the last time they did it
Like actually interacting with a command? Like a admin function?
Command history returns (userID, command, timestamp) ? @dusky abyss
Can you fake the output your thinking here in discord chat
Like the command would be history and it returns anyone’s last commands?
Admins get usernames?
Last Seen:
spudgegunman, Lemonstand, 2 hours ago
bitflip, llm, 16 hours ago
NomTom, whoami, yesterday
or similar
wouldn't even really need last command
i was just thinking to see like the last 5 people who used the bot and how long ago
spudgegunman 2 hours ago
bitflip 16 hours ago
NomTom yesterday```
Oh yea, nice
yea, just to take a look at who else has been using the bot
Yea should be easy to add
an ignore option might be nice too, so you could use a specific node/name for testing and keep it from being the top spot everyday 😛
Give the latest code a try
Will have a enhancement in a few as well to catalog LLM use
Once I made the split on spaces, question marks, dollars and hashes, the world opens up. You can have compound commands like test#1 bbsread#1 motd$right you orrible lot etc.
I'm continuing to experiment locally, I'll push changes tomorrow night, I think.
The alternative approach is to look for trap words and then look for trap words with those special characters appended, but even that will miss test#1
Lheard and lseen?
Lheard is a throwback to the TNC command mheard, if there is too much data it should split at the two
It shares the same value at sitrep
Sort of a catch all for the concept
Added the further telemetry it will also show battery if on
If dual node this screen gets busy quick
I didn’t go as far as enhancing the trap stuff for Lheard 1
Like you would run in a tnc it just didn’t make a lotta sense
If multi node is interesting it’s worth fixing my core code replication mess (basically copy code and if.int2)
It’s not something any Python book author would approve of but .. meh
Bot.py just hit 1000 lines again
Haha yea
modular
Haha yea, it wouldn’t be difficult (at first thought) to split every command out into its own .py file
End of the day it’s just readability and usability
I mostly code in vscode which has the context help to remember what function
Ah, I would, but the push changes takes too long that way...
For python, anyway
ping? works
wiki? does not
will return when not tired
I half considered suggesting just helping by prefixing man to each command...
Consider splitting sitrep and lheard?
Or consider splitting certain functionality
The issue becomes: the message splitting function gets a bit nuts if it's asked to split a message with newlines in it
But a snappy little response is better anyway
Imho
There isn’t enough room in mesh to really get away with this
Most all commands return context help
If you really need this for something I would likely refactor your recent push
I don’t want regex parsed as user input
msg.endswith(“¿")
The data isn’t really what the bot is for
Lheard and sitrep are the same command
If there is too much data the parser will break new lines
It should be breaking at good spots
When two nodes are on the bot this is a very busy area anyway
Most all commands return help when misused
Wiki actually has a bug I never tested just fixed
Hopefully fixed some game play usability stuff
ok, pull request withdrawn. I see your point
I'll re-do with specific help trap words instead
ok, one more stupid question before I collapse:
how about splitting the trap word action list into "any channel" and "DM only"?
I think I've already got the isDM bit worked out
Just need to know if redoing the autoresponse function for anychannel and isDM is worth it?
Additional point in favour of this approach:
It allows people to discuss the games and commands on an open channel without the bot getting confused
Another point: the trap word list is getting long now, and it is already easy for it to get confused by things like "sun"
The bot currently detects DM, and I recently changed the game play messages to “play via DM”
Could the autoresponder use a isDM? Possibly? But it’s also just one value change for preventing the game play from being seen on a channel. I actually left it as it currently is so the game is advertised hehe (but it could be changed quickly)
The games should only be playable via DM not via channel today
As of the latest git is this an issue?
Sort of is what it is, it’s all turned on and off with enable in .ini and it won’t trap anymore
The words are all carefully selected to cause minimal problems in normal speech (English American) anyway
How often do you text the word sun for example not much
But texting the word sunset is common I feel
So I didn’t use the common word to not have people get slammed for common language.
“Let’s meet at sunset” is common
Did you see the sun?
Would also return the sunset
That’s my reasoning behind the words
The Word help I removed very early on as I didn’t like using it on air
The Cmd? And Cmd is because I saw lots of people type in Cmd? Replicating the help text
The Cmd list is getting long and I try and trim it as needed like the recent addition of history isn’t in help I don’t think a normal user cares and anyone else will find it
If it gets longer I may remove Bbspost and just leave bbshelp
If you’re eager to have a ? Trap on Cmd? And bot? Or the likes and bring the user into a few blurbs of extra messaging
But almost all programs in the project have inline help I know of
Any command if taken will provide help if malformed
So inherently help is inline
Could the welcome message or help message be better by default? Yes likely
As a local sysop if you choose, might be worth sending a message via the scheduler with like bot tips
Engage the mesh
Back when I ran some packet bbs I would broadcast “play game now at 145.100 K7MHI-4”
or whatever it was on aprs I still have my config script somewhere had a real busy BPQ server
ok, I really want to split the trap words into channel-respondable and dm-only
I can see 2 ways to do this:
- what I've just implemented, where there's a
isDMflag that's passed to theauto_responsefunction which only responds to certain commands that came via DM - put it where I think it should be, in a separate list that parallels
trap_list, maybe calledtrap_list_dm, and handled by a separate function calleddmTrap
1 is ugly and sits in mesh_bot.py
2 is moderately more elegant and sits in system.py
oh, and please be gentle - I have zero clue what constitutes good programming form 😉
The bot already has detection forDM passing the value to auto_response is fine but, whats the use for is this all for games which already only work via DM (what is being enhanced)
I’m confused what is being done for what reason. Today games and LLM work only via DM, I don’t have any plans to really expand that use ability (what are your plans by adding this?)
For item 2) same question what is all the refactoring for? Why is trap list needing so much rework?
I personally done care about the size of a Python file
I enjoy trying to keep it nice but the bot.py could be 2k lines and if it’s stable meh ..
I likely will reduce some code blocks down I left expanded for troubleshooting
Might move some stuff to system but - I broke it out just to keep it easy to work with
As bot.py is all the major business it’s ok for me anyway if it’s large
All your ideas are cool and welcome just want to make sure any which go into the main branch have some plan for future use
IsDM is cool data to have but what will it enhance today? Or tomorrow?
The only item is the welcome to all the games which now say play via DM, and if the nodeID wasn’t passed to send it would only send via DM
So if all this work is for that, I could make it an option in 5min or change it in 3
I was pondering what I would do with isDM as part of handlers/auto_respond and I’m torn if moving code from onRx to _handler it seems so 50/50
At some stage a total core rewrite seems better
But also a lot of work
The use case I have at the moment is 2fold:
- keep the bot from triggering DMs from channel conversation without cause - ping is fine, joke is not, for example.
(there's quite a lot of idle chatter on my local mesh, I don't want to trigger too often)
- a set of test and ping commands that work on the channel and then get released via DM
And 2a) make some messages more detailed via DM
Yea handy for that for sure, this crosses with “respond via DM only” value which could be checked and used today
adds more flexibility anyway 🙂
I also feel like the LLM is capable of better dad jokes
Better than the joke module?
Btw, I'm learning a lot about python just by looking at this 🙂
The joke module pulls from dadjokes()
But the language model really seems to have some good humor sometimes
Oh good! I have some bad practices for sure in terms of proper code but glad it’s helpful! I try and comment a lot
The comments help
I'm also spotting things where certain things fall down because they're testing something in one way, and then they pass it on to something that handles it another.
It's really interesting to see
I see what you mean about a rewrite...
But it's a lot of effort for something that already works.
Also, python has really weird stuff like switch cases that aren't...
Stuff I've actually used in C that is handled really strangely
I should pull it into vscode, it would make me more disciplined
Any Python aware IDE helps a lot with Python chasing white space all day otherwise!
This was very much a throw a bunch of ideas out see what is fun
Call it creative writing; I will work on condensing some code and cleaning up the dyslexic logic
Added in the isDM idea pulled your fork @stone lance
You don't want me to go with option 2?
actually, the isDM flag is useful anyway
or is needed for the different responses depending on the route in
What was option 2?
Trap word stuff?
#1255754522303922217 message
yeah, trap_list and trap_list_dm
would have to split the word list further back
honestly, at that point I was considering just pulling it all into config.ini
then it could be set on a per-user basis, so you didn't have to deal with my bullshit!
which I may still do
I accounted for that with default commands which can be handled like a list
The idea here is you want to parse multiple commands? (This is currently possible there is a list to parse)
Simply adding ? Is a matter of just adding .endswidth(“?”) return true
But I don’t know the value of this function
If you did it today it still works
And if you want more evaluation in the handler … not the bot code
Some day the bot code will be a 2.0 core and all the handler will be plugins
That’s the idea
So any commands should be in the command list array to properly be handled by that concept some day
argh, my rpi has lost internet
It's still responding by mesh, but I can't VNC in to test
I had trouble trying that
because it picked up ping ? but not ping?
so "ping?" ends up in the trap_list, too
You really want this ? Working huh hehe
the LLM is cool, but I want the cold robotic commands working, too
I can add it in but I won’t likely be enhancing anything to handle it beyond basic logic
yeah, I know
gah, and now the baby has woken up
I'm calling it a night
there's another fix in my repo, but it needs testing
I noticed you didn't pull that
if message_string == help_message or message_string == welcome_message or "cmd?:" in message_string.lower():
because the previous one didn't .lower() the last bit
right, gtg
message_lower is available
But this line of code isnt wrong imo why I didn’t take it. It’s specifically matching the exact use
It’s to match the header of the help text
It is not for user facing code
Bot:bot detection
Games are a nightmare if two games play on the same channel why isDM was an attractive use there
And if anyone sets that up it’s on them haha
The LLM is also something I want to test putting my alpha code against my production code to let them chat it up for a while
The LLM or just bot-on-bot conversation thing is an interesting one
I put in a feature request for mode/user status
But I specifically asked if node type could be in there too
So you could explicitly say "this node is a bot"
But also you could set your bot to ignore others, too
do I just repeat lines 70-73, but with a .endswith("?") added on, and then remove the "?" before adding to the cmd list?
Grab the latest code
Any command will now fuzz with ?
Published a new Tag release 1.2.3
Spent some time cleaning up the install.sh and service files, tested them on a default Ubuntu
what does install.sh do ?
It installsh it
Anyway, is there a way to right-align a message, either paragraph format, right-to-left language, or just plain spaces?
I have an idea...
Heh, yea it tries to automate the install of bits for those who may not know Linux well
Installs requirements and venv, configs some .service files
Installs emoji font and ollama, pip
You can use string manipulation but to line up two rows between iOS and android and different screen sizes is kinda impossible as we have no way to align columns
Lheard/sitrep pushes the limits of “cool text” I have found so far
?
Specifically I’m using f” and non f” to get the equivalent of a \r vs \n
The simulator will print text with line breaks showing approximately the phone output
Nice yea thanks, I took it in and did make some changes. Most notable is keeping any responses from having a trap word in the response
A cheat I have been using is no spaces between the word and a emote
Otherwise two bots on the same mesh will run a loop
Fun! it’s acceptable returns with a pi5 or better imo
If you run it on a GPU it’s instant basically
I enjoy it’s presence with or without internet fun to have in the bot
Also I have noticed the latest ollama is faster, go update if your on a version older then this week
I haven’t tried a pi3, it needs ram for sure to load, so the 8/4gb units are needed
I did see just this week llama3.2 is released in a 1b model
I assume it will perform near gemma2:2b but at half the weight of a model
I haven’t tested it personally yet but I am sure it will be compatible with the bot
Could be worth using as the default
My dev platform is a low ram value laptop GPU 1060 or something
I have a 32gb RTX here but no motherboard, I’m going to try jamming it into a pi5 pci-slot
In theory it will work
16x -> 1x adapters are used by miners
OK, you're making me feel bad.
My gaming rig has a 1080 in it...
right, I'm done for the time being
I've done another pull request for BBS-DM via hex code.
It was fun to do a try: except:
y u no like newlines?
I'll add some help strings to the BBS module at some point.
I caught up with someone else "on the mesh" earlier today, who's interested in giving some of these things a try, but doesn't get on with Discord etc.
so I'm trying to make it friendlier from a complete outsider's experience
i.e. someone who doesn't know how to interpret the code
Eats up space mostly, just trying to keep wall of bot text from being overwhelming.
Remember all commands return help when misused ..
As a SysOp set up messages to broadcast more
People are typically shy to use some bot unless they know the owner imo
Around my mesh it’s 90% ping and test
That’s about it
I mean, you say that, but in my experience things like the subtle difference between "wiki" and "wiki:" gets confusing
I always feel like this when learning a new thing, btw
"I should write some extra notes for other newbies who come through"
Well the trap word is just wiki: not wiki to keep it from being a mess for stuff
Yea for sure, but anyone who runs wiki, wouldn’t think to run wiki?
There is still a human element needed to invite people to use the bot
true
yes
just copy and paste a few nodeIDs from the app
in the android app it shows them in !hex
and can copy/paste
I didn't actually realise you could use the shortname
Yea, but my quandary is short name is a field value which isn’t hex Id
I just thought "oh, Ihave to do hex to dec, painful."
No I have logic for it (so the try wouldn’t be best here)
I just never expected anyone to have that hex id for mail
there's no isHex function built in to python
It’s complex and not human useable
Yea it’s in the code
is it?
But your passing hex into a alpha short name
As a string minus !
I didn’t expect this to work at all it’s not programmed to
I tried, but everyone does their own version
I may not pull this in, I would prefer to use better search for the node
oh, by stripping the ! and trying to int(x,16) it works
and if it doesn't, then it just passes on
!hex is built in to the android app now
I messed that so your passing the long number id
It’s still being process by get short name string
yes, true, but if it is passed a valid base10 nodeID, it just passes it back?
I dunno, I was tempted to swap the variables and make atNode and toNode, so only a valid node number is passed from one to the other.
I just thought, for nodes that the bot hasn't got nodeinfo for, it should still be possible to leave a mesage.
¯_(ツ)_/¯
just meshing around, right?
The code you have a PR for wouldn’t allow for that that, my issue with it.
Your forcing a search in short name for the long ID number
It’s working due to a glitch imo
Hold on let me use it to get something in which will work
ok
ah, hang on
if the first if "!" in toNode is successful, it puts the base10 ID in and calls it good
which is what the get_num_from_short_name does, too
FML, its nearly 5am
I'll come back, I swear!
I really like the BBS DM thing - leaving messages for when people finally try it out
It works really nice
Are you trying to train it's sense of humour?
Yea haha. Added high score save to casino games and fixed them up more
Bunch of fixes and enhancements in
Note worthy the logs/ are now in folder, I am mostly sure this will work cross platform
Ignore Default Channel lets you do just that
It will still log to disk just not respond to anything
Casino games will now let you resend the card hand if it was lost in transit
Published a 1.3.3
time to upgrade 🙂
Put some new games into main branch another late night double feature picture show
Oooo!
I remember playing that or a similar one on my family computer.
The DOS-only PC was fun. Text based games are an art.
Nice! Yea finding games with enough fun and which fit into a chat bubble has been an adventure, I have played a lot of random script.py haha
MasterMind🧠 got high score table and expert mode I beat it once no cheating, then wrote a HS table because I couldn’t beat it again
Did a lot of golf enhancements
Happy with its turnout
Added hazards, and a caddy, save score
Also had a some enhancements to docker today for localization
Worth a reconfig / evaluation of the docker file
If your a 🚢
My current project
Device:1 Sending 117 long DM: Welcome to UNO! Please wait for others to join
Not sure if it will launch yet but gonna try
The biggest issue is you can have a hand of 20 cards and I don’t know it will work
Similar to a zork issue just can’t fit it all
Fit 9 holes of golf so ..
Gotta be room for ONE card 🃏
I was thinking about this. How about numbering multipart messages (i.e. #/n) and then allowing repeat # to replay a lost message?
I was also thinking you could have a word with the app admins to allow a games mode or something that would reorder out of order messages, or allow a temporary pinned message with the commands in.
And while I'm vomiting ideas without solutions: hyperlinked items that allow a quick-type of that in the message box...
Numbering messages is possible but adds to the loss of string length and this issue ..
Let’s say you have 7 messages in a chunked group for whatever
You get all messages but “3:7”
So you gotta remember the messsge chunks and find id3 and sent it or all 7 again it gets insane and horrible
I tried for a while with a few ideas and hated them all
I don’t see how any port of a classic crawler will work
At the time everyone was enjoying freedom to be verbose
It’s almost a nightmare to try and edit to 300 or less blurbs
So it would need rewritten entirely and .. meh
Hyper links do work but you need to then add a web server
Meh
If any dream request it would be for injecting gifs and images
Oh boy .. think of the games
Message sequencing would be nice
I worked all day on forking this dudes uno code into a functioning project, and it seems to be much nicer then I found it - at minimal I know I can get a bot/player game
Im porting it now about 25% of the way in and its going well so far, but I haven’t got to persistence yet with the deck of cards
If this works … multiplayer and all .. it opens the door for a flood of wacky ideas
Like the sega Dreamcast the possibility of having a DM and Channel dialog makes for a fun interaction
Game of football or baseball?
I have a closet of card games I would love to convert
Would it be impossible to have a flux.py?
I think meshtastic could enhance the game one night warewolf
The Classics like ♥️
Can ring the 🔔 when 💔
Anyway .. uno is a good start I thought
Complex enough but not
Power out family needs a fix of using the phone
Play some card games ..
Oh, I agree - even if you boiled down Advent to the short description only, and had unishox compression on top, you'd quickly flood the mesh.
I was just using the long messages problem as a jumping off point.
I think you could do something with the message chunker - get it to remember an array of the last message sent per user. I don't think it would be too heavy.
I'll have a think.
If you limit chunking to no more than 10 messages, then you add 3 characters to the first 9 messages and 4 the the 10th
No, thats wrong
Ok, limit to 9 messages
That's still over 900 chars
I think I need to have a think about the chunking logic.
I was thinking of asking for the hyperlink logic to be tweaked
I think it just uses the default in the OS
So numbers that might be a phoen number get highlights
Oh, multiplayer in an open channel?
Oh, wow!
So it would tell you your cards via DM, but only accept e.g. bets via the public channel
Could you could ask it to spawn a new private channel and DM the details to the players?
Actually, just having it send out the channel key on request would be handy.
Yea, see how it plays out anyway
Step one get the uno prototype done
See how it chooches
Past the deck, I think and possibly 50% done things still looking ok
The basic bones seem there now anyway
🦴
Side project wrote a bot backup utility. https://github.com/SpudGunMan/node-slurper
I was play testing golf and got 24 as a final score !! I think I had the > backwards and it didn’t give me a new club record .. I was big cheesed 🧀
I fixed that I hope. and dropped 1.4
Hope to have a bot/player working soon if not multiplayer all at once things still moving nicely along
Porting these random games .. I had to fork and fix a lot of issues first
The original author had a rule in play for “can’t go out on a action card”
That’s horrible I always keep my wilds for a final card
I checked Google and it didn’t say those rules are official
I also got another fun idea brewing send ping 10 and it would ping you every 20secods for the next 10 cycles
Likely cap at 50
15min or so 3/min
I have a confession to make
I have never played uno
But multiplayer with a new channel generated for the players does sound like fun
Nice, it’s a simple rule set easy to handle in code why I picked it
I just got auto-ping working nicely but I can’t easily push it up right now
A very cool new reporting module was just enhanced by GitHub @xdep
In logs/
I also have auto-ping in branch:lab
The lab branch is currently best place to test new code
Also to use reports turn on sys log in meshbot
Oooooo god dang
I wet myself when I saw it
I just modified the logger to give better results to it
Got rid of asci escapes for colors to flat file
I am really excited I am about to add new data to it I hope
A wall of shame might be in the works
Mmmmm
Ok lab branch has some major updates to all stuff and a working shame wall v0.01
I haven’t documented anything yet
But if you run the report tools in etc they should generate html in www
There are two tools one has 5 because it’s HTML5
The report tool is not currently cross platform either but should be find in Docker (which could use a w3svc now..)
Reminder to enable syslog in .ini
And you don’t need to change the log location values it will fail to project file structure
Is docker workable on a pi3b?
Don't see why it wouldn't work
Docker is I feel more for windows and apple
If your on a pi3b just run native or venv
It’s the best way!
Pipx...
Yes that’s fancy as well
Ok, one more stoopid question: python on android?
Can I run this on a mobile phone attached to a node?
Just thinking of Nagu's quest for the lowest power option.
That was my thoughts too
Yes if meshtastic api loads so will this, you may not get all the includes to load up but they are modular 😉
OpenMeteo or whatever has a few interesting packages
When I tried to include them first day they crashed haha
I helped them isolate the issue haha all good now
Just wondering if it's lower power than a pizero
Which, openmeteo?
Yes
I need to get the weather bit working on mine
Its still set fort he default location
Just had an issue submission and pointed out some problems and made it better!
Nice you can see my weather! Haha
It threw me because it's pretty similar to here...
I gotta tap out, let me know how testing goes, this new web tool is the bees knees; what else can we cram into it?
The more wacky cool stuff the more ollama can eat
Had a new game idea come in, it’s in lab branch and it’s not in the bot yet at all but 👀
Keeping up with double feature game releases with uno be a fun debut to multiplayer
I paused uno work for the excitement of reporting
Reporting module looks done for now would love any input of ideas for it (still in lab branch)
If anyone knows why my text color isn’t inverting on high-contrast I’m stumped for now
I was wrestling with that for light/dark mode on the main docs.
Something something custom.css?
The values change but for some reason are not honored; I’m a rusty web dev. I tried editing in browser for a while and got no luck
It’s like it forcefully ignores the color on a child frame
Could be a security protection
Pop up with white text
¯_(ツ)_/¯
Is your plan to make it administered via a webpage?
I just put a feature in for hop_limit for game play
Could be, I got a bunch of ideas written down see how they pan out
I would like the ability to add to the ban list for example
Delete messsges and post new BBS content
Lab worth a pull has enhancements to logs you want if using latest code
Games now report into the reporting eco system
Any way to get the full nodelist out of the attached node via meshing about?
Without resorting to the command line?
Yea it’s on protobuf, I think the individual who submitted has some dedicated tool to do just that.
This now is a debate of how much ..
How much data to process
Right now I’m just caught up with everything to consume I think
New would be total new logs generating
Today the bot only collects text messages
And it’s cataloging them now best effort I feel?
Here is my thoughts on “more data” there are other more powerful tools already on GitHub filling maps and graphs, that said I do have my own ideas of some fun data metric to report on.
I need telemetry packets, so I am at a crossroad
Split off functions on a different file/or project?, keep chugging 🚂, see how it turns out, add MQTT
I do think I will try a MQTT connector
I’m wondering about being a server and a client
If I am a server a node could connect to the bot directly which is fun?
So one node usb one node MqTT injest
The dual interface is there ..
I think the gathering data is ok if it's for a specific purpose
I could likely shim the packets off early onRx
The upside to adding a MQTT is I think all the tools now support connect
I would just act as a client or server I assume
Telemetry would be handy to say "what's the weather been like?"
Yea it would be fun
And I still want it to respond to position requests with "who's askin'?"
I just want the nodelist to ask it what the percentage of each device type it can see
"seen many heltecs?"
Yea, I do think I can get that far, what’s the cool database to use these days I have been using pickle because of its handy format and people can’t just text hack scores 😉
Not sure it’s the best to feed this into
Bah.. databases
You gotta plan things more
Dopewars got a little enhance today you now find cash and drugs
Also having a graph on the volume of traffic I send is comical
I will share in like a week, mostly I want to see what breaks first
I did 250 messages a day the last two days
That is a fun idea
I accidentally made it send me a string of 10 blank messages when I was trying out a weird pong-by-mesh
Cos it splits by new line
Heh .. I test off defaults now
I once made a mess it was good
Like 800 messages
Heh
Early bot days I was a lot more reckless with packets
And I want to make the pong Xtimes add distance data if it can.
Have you got a Todo list somewhere?
Just a list on my desk
Cos you're a f'king machine at the moment
Haha thanks
Distance with pings is cool but getting updated telemetry is hard and hard on mesh
I have commented code in the bot to force pull and it’s not nice
I was re-looking at condensing it into micropython, so it could sit on a pi-pico
Yeah, I see that.
Will meshtastic run?
Meshtasticd?
On a pico?
No, it would have to communicate by serial port
Just raw messages
Anything else requires protoboofs, I think
There is proto there on serial
I think it passes plain text, too, tho?
I have this paper hat for pi I want to try and use the lcd for the bot as well
Ohh I get ya now
So it would just parse any message incoming and reply by DM using the serial command
Just to run a cut down version
Hem.. yea that would be nice wouldn’t it …
Likely figure that part out sooner
It will be the next major addin because it will pave the way for access to a terminal and MQTT as well
New device types likely .. it may be time for the rewrite I have been dreading but this gives some good reason for it
Interfaces need to be in a class
I wish I had done it from the start and kick myself when I see the early work
I was more excited to press ahead vs stop and plan a class
Either way I had no idea it would be this fun to write all this
So kinda on track for the 2.0 rewrite.
1.5 will be the reporting and likely the multiplayer games
Have stuff resolved by 1.7
And by 2.0 have a new core …possibly
I was reviewing this new game idea submitted today
Cleaned it up a little
It needs a storyline
A reason to play
Running from zombies?
"""
Mesh Trekker Game
Game Rules:
- Players compete to cover the most distance over time using their Meshtastic devices.
- The game tracks players' movements via GPS coordinates sent by their devices.
- Total distance traveled is calculated and summed over time for each player.
- Leaderboards show top distances for daily, weekly, and all-time periods.
- Players can form teams, with team distances being the sum of all team members' distances.
- Special achievements are awarded for milestones (e.g., 10km, 50km, 100km total distance).
- The game runs continuously, allowing players to participate at their own pace.
- Players can use the 'whereami' command to check their current location and update their position in the game.
"""
The game starts when someone implements gtnw?
Causes a core meltdown?
a virus would be needed to “degrade message” to take game play over randomly, or more specifically during windows of coms times?
The dialog of the game would be like the in ear assistant in the halo suit
Or hl2
Something like it would ping you at 2am “listen the reactor is going out of control we need you to make a decision”
“We need answers in a few hours”
Random window stays open.
Either way the whole thing explodes and you gotta .. run
I do think impacting all bot actions is funny if you ping it will just keep game play going
Get the mechanic working first, then decide the story around that
How do they travel?
How far?
Is it a run in the park, a walk in the 'hood, or a drive around 300 square miles?
And how fast?
Daily run, a quick game, a treasure hunt?
Is the mechanic there in the demo code
I need to get it functioning first
Is it player-led or bot-led?
Do they pick their own activities, or do they get missions?
Yes
I think it should be both
WOPR did it all
I want my epaper pi hat to be a wopr face now
This is going to happen likely
I’m gonna use what I got and gtnw
2-off 4x4 led matrices and a digital equaliser
It fits the news as well hihi
I kickstarted that project
I am very sad I lost all my stuff due to the accident with it all
But it was a great idea
The voice audio would be good modulated after being passed via Lora I bet
I hope we get text to speech before WiFi on apple
If I have a spare 20k it’s my request
It would be controlled by the phone globally
I’m gonna shelf this idea (as I have been) till it’s ready to roll
I need to finish uno to test out some ideas
I also want to get a RAG on here because .. it’s so valuable
I don’t know it’s totally practical yet but I feel like it’s close
I tried ollamas models the other day and they failed to make a product work
But I think it would be rad to be able to use kwiki files as a basis for truth for a LLM
100% off grid meshtastic help bot
I don’t know the pi5 can handle it but if it was like under 60 second responses .. it would be awesome
PDF of ham rigs you could ask via meshtastic
What’s the setting to put my ic7300 in usb modulation
I need answers not this dribble
Also @stone lance how would you split this
Periods?
And so some code like.
If over 160
Count .
Divide by
Re process and chop it again?
If you wiki: ham radio
I feel it’s a good horrible example of how bad it can be
This is mentioned:
https://github.com/MichaelMcCulloch/WikiDex
I'm not at my computer, but I was going to try one of those examples
So it keeps adding parts back in until it takes it over.
And splits by new line, period, and then by word
But maybe it needs a custom splitter for certain functions
Like status messages
But lambdas can't return more than one thing?
Yes but look at this mess to enable it .. oof
I want 300 lines or less haha
If it costs me 25 includes I’m still interested
Good test items are the Wx and wiki:ham radio
Wx is three days they make a sentence a day and it’s sometimes verbose
Why I cut words down in it
Thunderstorm costs
T-storm don’t
⛈️
Have you got a list of the bits of information the bot has?
It gets passed a lot from the Meshtastic library
Hmmm
Unishox wen?
Does the bot have access to serial logs?
I.e. can it read off what the tx time is for messages?
As in compression?
Yea a lot of string passing for sure but it seems ok?
Yes. It's available for some packet types, but not text strings yet.
If it’s not easily accessed .. not sure what to do about it
The big change Benton hinted at may change things gonna need to see
The logs are just cleaned up proto
So yea technically it has access to all
My project likely today to find the TX RX packet value in telemetry
During this .. it might be realistic to log values of proto to disk
More importantly it would be good to stuff them into a SQLite
I was just thinking of tracking the airtime of requests.
See what is heavier on the mesh.
And try to build in some kind of rate limiting.
You have access to the ch_use value today and I could likely quickly get it into the dashboard for a new chart
I would like the values Tx RX and error rate on the same chart
sittep and lheard print the value so far
I haven’t had issues myself yet at all so I haven’t limited it but evaluating for the tx % and if it’s over x cool down but the issue is it only cripples the bot
I haven’t seen the mesh get crippled
The game hop value for example is 5 by default
It’s a limit but it likely won’t ever be hit
That alone will cut a lot of traffic out if set to 1,2
But to say multiple people will be playing games so much it slows down the mesh .. meh
Texting is priority traffic IMO over telemetry
Using this meshbot is the first time I've ever hit the 10% airtime limit
Yes I don’t have that at all; I’m using the firmware protection to limit
When you hit that limit do you see any feedback from the node?
Trap for a log? I may need to read code to find it / hard to have error thrown easily
Is that limit seen today? If you run Sitrep is tx value large?
I would likely cough compile my own firmware if I was in your region
LOG_DEBUG("txGood=%d,txRelay=%d,rxGood=%d,rxBad=%d\n", txGood, txRelay, rxGood, rxBad);
Fixed a playability bug in
I'm thinking of using WarGames the movie https://en.wikipedia.org/wiki/WarGames as a basis for a plot line to (this game) acting as the (heads up/in ear) assistant like in half life(portal)/halo. (This game) knows it exists in WOPR for example. And pretend like the chaos of the moment of discovery of the game (this game) global thermal nuclear war, so it's the perspective of (the game) realizing its code is going to eliminate everything. And it panics internally while (processing tic tac toe). Draft plotline anyway.
WarGames is a 1983 American techno-thriller film directed by John Badham, written by Lawrence Lasker and Walter F. Parkes, and starring Matthew Broderick, Dabney Coleman, John Wood and Ally Sheedy. Broderick plays David Lightman, a young computer hacker who unwittingly accesses a United States military supercomputer programmed to simulate, predi...
The game would be dormant on a bot and not playable till invoked
Once it is the game would never end till you wipe the bot
(Delete game files)
I had an idea about a local area game, called something along the lines of "awaken the mesh". It was basically a treasure hunt, with the meshbot providing the clues at each point.
I initally thought that additional nodes with bluetooth to provide the trigger that a waypoint had been found/activated, and "extend" the mesh to the next waypoint.
However, I subsequently thought maybe it could be team-based, and each team is given a separate PSK channel, with location precision set to full, and the bot would just make sure all of the team were within a circle to trigger the next point?
You could use the self-triggered location ping to "activate" the waypoint
And then maybe some storyline based challenge and respond
Yes I remember your idea and those mechanics are likely soon did you see my recent GitHub comment on the new game file?
Just more nerd ideas vs summery here
I want to finish uno to test multiplayer experience over all before jumping into the next one fully
Pushed a lot of Python around and a little Java more stability, I started refactoring things around condensing some lines
Reticulating splines
@median fractal 👋
Hey hey! Yea thanks again for the HTLM builder/reporting really kicked it up a notch!
It does look awesome