mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-10-30 01:32:22 +00:00
The ACK fix I wrote for the radio-lock work is now upstream and released (meshcore_py#108, v2.3.13). Before it, send_msg_with_retry reported ACKed DMs as failures: the ACK subscription was registered only after send_msg returned, so an ACK queued right behind MSG_SENT was dispatched with no listener, and each attempt accepted only its own ACK code, so a late ACK answering an earlier attempt was ignored. The bot logged "no ACK received after retries" and skipped the delivery bookkeeping for messages the recipient had in fact received. Pin 2.3.14, which also fixes send_cmd's destination-type handling. Two fixes from re-reading the merged radio-lock change: A region-scoped channel message now restores global flood even when set_flood_scope raises. The restore only ran in the finally around the send, so a set that raised left the device pinned to that region and every later send went out under it. Drop the __setattr__ left behind when _SerializedCommands became _serialize_command_frames; it sat after the function's return, unreachable, and still referenced the proxy's _commands slot.
54 lines
1.8 KiB
Plaintext
54 lines
1.8 KiB
Plaintext
# Runtime dependencies — keep in sync with pyproject.toml [project.dependencies]
|
|
pyserial>=3.5
|
|
bleak>=0.20.0
|
|
asyncio-mqtt>=0.11.0
|
|
configparser>=5.3.0
|
|
python-dateutil>=2.8.2
|
|
apscheduler>=3.10.0
|
|
colorlog>=6.7.0
|
|
requests>=2.31.0
|
|
urllib3>=2.0.0
|
|
pyephem>=4.1.4
|
|
geopy>=2.3.0
|
|
maidenhead>=1.4.0
|
|
pytz>=2023.3
|
|
aiohttp>=3.8.0
|
|
# 2.3.14+ is required, not merely preferred. Before 2.3.13, send_msg_with_retry
|
|
# reported ACKed DMs as failures: it subscribed to the ACK only after send_msg
|
|
# returned, and each attempt accepted only its own ACK code, so an ACK that arrived
|
|
# right behind MSG_SENT or answered an earlier attempt was ignored (meshcore_py#108).
|
|
# 2.3.14 additionally fixes send_cmd's destination-type handling. 2.3.8 first brought
|
|
# send_node_discover_req / req_regions_sync (zero-hop neighbor discovery) and the
|
|
# bounded, serialized BLE write.
|
|
meshcore>=2.3.14
|
|
openmeteo-requests>=1.7.2
|
|
requests-cache>=1.1.1
|
|
retry-requests>=1.0.0
|
|
flask>=2.3.0
|
|
flask-socketio>=5.3.0
|
|
flask-compress>=1.14
|
|
# Still required alongside the meshcore library: `meshcore_cli.next_cmd` backs the
|
|
# contact and channel operations (add/remove contact, discover_companion_contacts,
|
|
# set_manual_add_contacts, get_channel) that meshcore.commands does not expose.
|
|
meshcore-cli>=1.4.0
|
|
feedparser>=6.0.10
|
|
paho-mqtt>=1.6.0
|
|
cryptography>=41.0.0
|
|
pynacl>=1.5.0
|
|
aiosqlite>=0.19.0
|
|
|
|
# Optional: profanity filtering (pip install meshcore-bot[profanity])
|
|
# better-profanity>=0.7.0
|
|
# unidecode>=1.3.0
|
|
|
|
# Optional: improved geocoding accuracy (pip install meshcore-bot[geo])
|
|
# pycountry>=23.12.0
|
|
# us>=2.0.0
|
|
|
|
# Optional: automatic language detection for multilingual replies
|
|
# (pip install meshcore-bot[lang]); the keyword detector works without it
|
|
# langdetect>=1.0.9
|
|
|
|
# Testing dependencies live in pyproject extras:
|
|
# pip install -e ".[test]"
|