Skip to content

Commit 12d22d7

Browse files
feat: rework to being async
1 parent e6d5cc9 commit 12d22d7

27 files changed

+938
-3007
lines changed

README.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,109 @@ An APRS Backend for Errbot
88
- Python >= 3.11
99

1010
Will probably work on Python 3.10 and higher, but the backend is only currently tested against 3.11.
11+
12+
## Disclaimers ahead of time
13+
14+
You should probably only run this bot backend if you are a licensed Amateur radio operator. The bot itself does nothing
15+
to check if your call is valid besides the basic "authorization" that APRSIS does. Use this bot responsibly.
16+
17+
Anything the bot sends could go out over the airwaves and you are responsible for that, not the backend developers. The bot
18+
makes an attempt to filter out profanity, but that can be turned off (see config options). It is a very US English-centric filter.
19+
20+
## Why Errbot and APRS
21+
22+
There are already a few other bot frameworks out there for APRS. For example, there's [APRSD](https://github.com/craigerl/aprsd)
23+
which is very full featured.
24+
25+
The errbot-aprs-backend was created to give another bot option for APRS users. Diversity is good!
26+
27+
By using [errbot](https://errbot.readthedocs.io/en/latest/), APRS users can now get access to the errbot [ecosystem](https://pypi.org/search/?q=errbot) of [plugins](https://github.com/topics/errbot-plugins) and [storage plugins](https://errbot.readthedocs.io/en/latest/user_guide/storage_development/index.html). Errbot offers a robust, well-documented [plugin framework](https://errbot.readthedocs.io/en/latest/user_guide/plugin_development/index.html) for building out new APRS apps.
28+
29+
## Current Status
30+
31+
Beta.
32+
33+
* Only APRSIS is implemented.
34+
* Messages can be recieved and replied to.
35+
* You can expect reasonable reliablity but might hit crashes and need to file github issues.
36+
37+
## Quickstart
38+
39+
1. Setup a virtualenv using python 3.11
40+
1. Install errbot
41+
1. Install errbot-aprs-backend from pypi or from Github
42+
1. Configure your bot using the suggested config
43+
1. Pre-install your plugins
44+
1. Run your bot with `errbot`
45+
46+
The [Errbot Setup guide](https://errbot.readthedocs.io/en/latest/user_guide/setup.html#) has more details on how to install and run Errbot, administration tips, and more.
47+
48+
## Suggested Config
49+
50+
APRS messaging works quite a bit differently from the average Errbot backend. This requires some diferent config from the average Errbot installation
51+
52+
APRS messaging is "unauthenticated". There is no way to attest you are who you say you are and all messaging is in the open, so using passcodes or keys
53+
to authenticate an admin is not suggested.
54+
55+
APRS messaging order is not guaranteed, nor is message delivery. The backend will automatically retry message delivery up to APRS_MESSAGE_MAX_RETRIES (default 7) unless it gets an ACK or a REJ from the recipient.
56+
57+
APRS messaging is limited to 67 characters. This makes long messages impractical.
58+
59+
### Required Config
60+
61+
```python
62+
# Set the backend to APRS
63+
BACKEND = "APRS"
64+
65+
# use bot_identity to provide your callsign and APRS password
66+
BOT_IDENTITY = {
67+
"callsign": "YOURCALL-1",
68+
"password": "123456"
69+
}
70+
```
71+
72+
### Disable the default plugins
73+
74+
The default plugins allow configuring the bot, installing plugins, and returing detailed help information. These don't work well over APRS because
75+
you cannot authenticate an admin. You don't want just anyone able to install a plugin on your machine!
76+
77+
The backend has a built in Help that you can set to a static string in the config with APRS_HELP_TEXT. Setting this to a website with help info
78+
or more info about your bot would be a good way to send a user more details on your bot without needing to send Errbot's normal detailed help info.
79+
80+
```python
81+
CORE_PLUGINS = ()
82+
```
83+
84+
85+
### Disable command not found
86+
87+
The command not found filter can get very chatty, responding to every message your bot receives. Disabling it will save on APRS bandwidth.
88+
89+
```python
90+
SUPPRESS_CMD_NOT_FOUND = True
91+
```
92+
93+
### Bot Prefix
94+
You can leave your bot prefix on, but that's just extra characters. I prefer to make it optional so users don't have to
95+
send it on every commadn
96+
97+
```python
98+
BOT_PREFIX_OPTIONAL_ON_CHAT = True
99+
```
100+
101+
### Full Example Config
102+
103+
See [examples/example_config.py](./examples/example_config.py) for a full config with all possible values.
104+
105+
106+
## Plugin Suggestions
107+
108+
Simple plugins are going to work best, or [write your own](https://errbot.readthedocs.io/en/latest/user_guide/plugin_development/index.html)!
109+
110+
111+
# TODO
112+
113+
* Figure out how to get storage like a plugin and use it to store the packet caches
114+
* Figure out a blocklist system
115+
* figure out how admins can configure without stopping the bot - web interface of some sort
116+
* unit testing

0 commit comments

Comments
 (0)