Background
I started working on BotTastic for the Meshtastic radio network starting in January 2025.
After finding Meshtastic I ordered a node, flashed the firmware, started it up, and happily wanted to participate and connect. However, I realized that, mostly due to how meshtastic works, finding other nodes is difficult.
As a new commer, you don't know what's going on.
Am I not hearing anyone because there's no one around?
Have I misconfigured something?
The early days were frustrating.
I also noticed that most other folks are in the same situation. The primary public channel has a constent stream of: hello, test, testing, anybody there... So, here's an auto responder bot.


BotTastic
BotTastic started as a simple robot that has the goal of helping folks test their radio and figure out if their radio is working.

It now has a few commands for connection tests, daily joke, and some public services such as finding whether you have a duplicate key.
The following is the list of commands. Check this often for new commands.



Commands
testA message is sent addressed to the sender. Content changes. testingA message is sent addressed to the sender. Content changes. radio checkA message is sent addressed to the sender. Content changes. antenna checkA message is sent addressed to the sender. Content changes. echoRepeats everything after the word echo back addressed to the sender. fortuneA random joke from a list of one-liners collected on internet. distanceCalculates the distance to the user, if they have a location set. historyReturns the last few messages received on the channel. Very useful in comparing what the bot saw on the channel vs. what the user saw. You can also use this, in a DM, to do distance testing. Send unique messages from different locations, come back to range, issue history and see what was received.

This has two main uses.

Send it on the public channel to get a list of messages there. So you know if there are messages you missed.

Send, up to 5, as DM from different locations. Then from a spot where you know you have connectivity, DM the history command. The bot will DM you back the last five messages. This way, you can see what locations resulted in a successful delivery.

Remember, due to how Meshtastic limits number of hops a message can take, what you see could be very different than what the bot sees.

All the traffic I see on public channel is logged to a page for your view. You can compare your history of the channel to mine.

Public Channel Message History - Burlington Area

Public Channel Message History - Harvard Sq. Area

pubkeydupcheckCompares your public key to all the other nodes that the bot knows about for a match. Meshtastic has now updated the phone apps and the radio firmware to help detect this but the bot can also help you do a local check. BotTastic only knows the nodes it hears from so feel free to run it often. If there is a duplicate, you can get the new phone app and regenerate your key from Settings->Security. ImportantAt the moment, for various reasons, Meshtastic only updates the public key when a node is first found. Subsequent updates to the key are not accepted. The only way to refresh the keys is to delete a node and let it be found again with the new key. This is an issue with Meshtastic firmware.

Impacts to you:

You might regenerate your key and ask the bot to do a duplicate check. It might still flag your key as duplicate because it doesn't have your updated key. Check your new key against the link below. If the key shown in your app is different than whats listed, ignore the message and wait until bot's keys are updated.

deleteme - Command to force the bot to delete your node. This is meant to bypass Meshtastic's key update policy. Force a delete and let the bot learn your new key.

Bot might tell you it doesn't know your key. Most likely, it deleted all the learned nodes and is in the process of finding them again. Wait until it learns about your node. This learning process is 100% based on how Meshtastic works and there's no way to speed it up. You can try sending the bot a DM. Sometimes it kicks Meshtastic into exchanging keys.

I suggest checking often. It might not find a duplicate key for you today, but might find one as it learns about more nodes.

Also, you might just ignore this whole duplicate key problem if you are not doing anything super secret over DM.

List of duplicate keys

pingme - In pursuit of helping people test their connection, pingme is a command that will send you a bunch of messages at a given interval. Use the command as follows: pingme count delay

count is how many packets you'd want to receive (up to 10). Default is 5.

delay is the interval (in seconds) between each message. Default is 2 seconds.

For example:

pingme 5 6 will send you 5 messages, each 6 seconds apart.

pingme 4 will send you 4 messages, each 2 seconds apart.

pingme will send you 5 messages, each 2 seconds apart.

The practical use of this feature is to have something on the mesh send you messages to assess how well you are receiving.

You could, as an excercise, ask the bot to send you 6 messages, 30 seconds apart. Then, walk around the neighborhood and then verify what you received.

Since Meshtastic is so unreliable, there's a mechanism to verify the Bot's side of the conversation from a web page.

This page lists the command you sent to verify that the Bot received it. The page also lists the messages that the Bot is sending you.

You can compare the web page to your own messages.

Ping Me History - Burlington Area

Ping Me History - Harvard Sq. Area

Word on Meshtastic Encryption

Meshtastic doesn't have the most secure encryption mechanism. Don't count on it as you might on other things. Yes, they do use encryption but devil is in the details.

In their words: "Is it as secure as Wi-Fi WPA3, HTTPS TLS1.3, or Signal? No."

Feel free to look at their own page on this topic: Meshtastic Encryption



All these commands work over the public channel and direct messaging. The output could be slightly different though. On public channel, responses are addressed to the original sender.

Hop Count

In responding to messages, the bot has two goals:

Make sure the response gets to the original sender.

Reduce unnecessary propagation of packets through out the mesh.

Therefore, it uses hop limits cleverly. It calculates the number of hops the original message took to get to the bot and marks the out going packet with a similar hop limit. This increases the chances of the original sender receiving a reply and the rest of the mesh not. For example, if a "test" request is received with 2 hops, the reply goes back with a limit of 3 hops.

As a result, it's very possible that different nodes in the mesh see only the original "test" message, the resopnse, or hopefully both.

Chit ChatBotTastic will also be happy to engage is brainless chit-chat. This can be done as DMs, or on the public channel if the message is addressed directly by using @265e.
If you want someone to say Good Morning back, either DM your message, or prepend it with @265e: on the public channel.
for example: @265e: Good Morning

There are also other commands coming, to help people perform connection detection.
Mesh StatisticsAlthough we mostly see the text messages, Meshtastic generates alot of background packets. This bot is counting the packets it sees to get a feel for how many packets are flying around.

Hourly Packet Count - Burlington Area

Hourly Packet Count - Harvard Sq. Area
>You can fliter the graph by clicking on items in the legend. For example, turn off Totals by clicking on it.
Updated every 30 minutes or so.

Active NodesIt's to see what nodes are active on the mesh and how they contribute to mesh traffic.

Active Node Packets - Burlington Area

Active Node Packets - Harvard Sq. Area
Updated every 30 minutes or so.


There are also other commands coming to help people perform connection detection.