Skip to main content

MeshCore Bots

A bot is an automated service usually attached to a companion node that listens and replies automatically to specific commands or keywords, things like help, ping, test, path, or wx for weather. They let you get a reply on the mesh without relying on another person on the other end to reply.

Bots are great for quick, basic diagnostics while out and about, confirming a path, checking a signal strength, or a simple ack test, without needing to dig around complex analyser websites. For deeper analysis, a proper analyser such as CoreScope is far more useful than a bot's basic text reply.

Bot Directory

PQQ - Port Macquarie
BotChannelsScopesCommands
MNC Bot#mncbotUnscoped (7 hops)help multitest path ping test
NTL - Newcastle / Hunter
BotChannelsScopesCommands
Newiebot2300#test #newiebot2300Unscopedcatfact dadjoke help joke multitest path ping test
SYD - Sydney
BotChannelsScopesCommands
MMTV - Bot#testau au-nsw au-nsw-syddadjoke hello help joke multitest path ping stats test trace wx
RoloJnr#test #rolojnrau au-nsw au-nsw-sydhelp multitest path ping stats test
BHS - Bathurst / Central West
BotChannelsScopesCommands
BathurstBot#test DMsau-nsw au-nsw-bhshelp multitest path ping prefix test
WOL - Wollongong / Illawarra
BotChannelsScopesCommands
WolBot#wolbot DMsau au-nsw au-nsw-wolhelp multitest path ping stats test
Orion#hiking DMsau-nswOut [Location] In
NOA - Nowra / Shoalhaven
BotChannelsScopesCommands
Nowra Bot#test DMsau-nsw-noahello help multitest path ping test

Using Bots

  • Use the smallest scope that answers your question, usually a local IATA-scoped test tells you what you need without flooding any further than it has to.
  • Try to query individual bots inside their own channel eg. #wolbot when querying larger scopes eg. au or au-nsw to avoid several bots flooding at once.
  • Avoid sending queries in quick succession. Give the mesh time to respond and leave a gap for others before querying again.
  • Be courteous. If the mesh looks busy or someone else is already testing a lot, it may not be a good time to send too many queries!

Bot Configuration

Unlike observers, more bots can negatively impact the network if not considered carefully. Ask the community whether another bot is of genuine use compared to what's already locally available.

Several community-maintained bot projects exist if you want to run your own. These are just a few.
Have a peek at each and find which one suits your needs best:

BotLanguageConnectionMQTT
agessaman/meshcore-botPythonUSB, BLE, TCPYes
Cyclenerd/meshcore-botNode.jsUSBNo
do6uk/meshcore_botPythonUSB, TCPNo
jkingsman/Remote-Terminal-for-MeshCorePythonUSB, BLE, TCPYes

A common setup is a small SBC such as a Raspberry Pi, with a companion radio attached over USB, running one of the above. Configuration varies heavily per bot, so follow your repo's Read Me, and check in on Discord if you're unsure about something. Default behaviour is usually not ideal, so try to bring it in line with the best practices below, or look for software that gives you more configuration control if the defaults won't budge.

If your bot also behaves as an observer, check the Observers page as well.

Best Practices

Best practices help keep bots lightweight. Followed well, they help ensure bots can remain useful tools while still ensuring human-to-human communication gets priority on the network.

  • A bot should avoid sending unprompted automated messages/data, unless there's a "greater good" reason to do so (eg. #alert bot).
  • A bot shouldn't send a message in a conversational channel such as Public or #sydney.
  • A bot should be made available in their own channel eg. #wolbot.
  • A bot should mirror its scope to the query it's responding to, OR only reply and scope to the local IATA scope.
  • A bot should ideally never respond to, or send, an unscoped message.

Personal and hobby bots can sit on the mesh with fairly insignificant impact, as long as they scope as described above, or are only available via DMs and aren't sending much data. If your testing is likely to be network-heavy or risky, such as when coding a bot from scratch, run it on a separate frequency or preset so it's disconnected from the network but still reachable for your own testing.

Bots must be actively maintained. Please check in on and test how it's behaving often to avoid unintended behaviour such as corrupt data, response loops, etc.