{"id":24835556,"url":"https://github.com/pskillen/meshtastic-bot","last_synced_at":"2026-03-13T23:21:14.708Z","repository":{"id":273573647,"uuid":"920167981","full_name":"pskillen/meshtastic-bot","owner":"pskillen","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-25T12:40:53.000Z","size":306,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T13:33:18.842Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pskillen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-21T17:20:35.000Z","updated_at":"2025-03-25T12:40:56.000Z","dependencies_parsed_at":"2025-01-21T18:34:02.756Z","dependency_job_id":"6d42e019-497b-4588-8d89-490d53565bb8","html_url":"https://github.com/pskillen/meshtastic-bot","commit_stats":null,"previous_names":["pskillen/meshtastic-bot"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pskillen%2Fmeshtastic-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pskillen%2Fmeshtastic-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pskillen%2Fmeshtastic-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pskillen%2Fmeshtastic-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pskillen","download_url":"https://codeload.github.com/pskillen/meshtastic-bot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245581055,"owners_count":20638919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-31T04:16:07.549Z","updated_at":"2025-10-19T03:09:28.316Z","avatar_url":"https://github.com/pskillen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Meshtastic Bot\n\nMeshtastic Bot is a Python-based bot for interacting with Meshtastic devices. It listens for messages, processes commands, and responds with appropriate actions. This guide is focused on helping you run the bot as-is, with minimal setup.\n\n## Quick Start: Run with Docker\n\nThe easiest way to run Meshtastic Bot is using Docker. This method requires minimal setup and keeps your environment clean.\n\n### 1. Prepare Your Environment\n\n- Ensure you have [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) installed.\n- Create a `.env` file in your project directory with the required environment variables:\n\n```\nMESHTASTIC_NODE_IP=your_meshtastic_node_ip\nADMIN_NODES=comma_separated_admin_node_ids\nSTORAGE_API_ROOT=your_storage_api_url\nSTORAGE_API_TOKEN=your_storage_api_token\n# Optionally, you can upload to a second API as well\nSTORAGE_API_2_ROOT=your_storage_api_2_url\nSTORAGE_API_2_TOKEN=your_storage_api_2_token\n```\n\n### 2. Use This `docker-compose.yaml`\n\n```yaml\nversion: '3.8'\n\nservices:\n  bot:\n    image: ghcr.io/pskillen/meshtastic-bot:latest\n    container_name: meshtastic-bot\n    restart: unless-stopped\n    environment:\n      - MESHTASTIC_IP=${MESHTASTIC_NODE_IP}\n      - ADMIN_NODES=${ADMIN_NODES}\n      - STORAGE_API_ROOT=${STORAGE_API_ROOT}\n      - STORAGE_API_TOKEN=${STORAGE_API_TOKEN}\n      - STORAGE_API_VERSION=2\n      - STORAGE_API_2_ROOT=${STORAGE_API_2_ROOT}\n      - STORAGE_API_2_TOKEN=${STORAGE_API_2_TOKEN}\n      - STORAGE_API_2_VERSION=2\n    volumes:\n      - mesh_bot_data:/app/data\n\nvolumes:\n  mesh_bot_data:\n```\n\n### 3. Start the Bot\n\n```sh\ndocker compose up -d\n```\n\nThe bot will now run in the background. Data will be persisted locally in the `mesh_bot_data` Docker volume.\n\n---\n\n## Native Installation (Advanced/Development)\n\nIf you prefer to run the bot natively (e.g., for development or customization):\n\n1. **Clone the repository:**\n    ```sh\n    git clone https://github.com/yourusername/meshtastic-bot.git\n    cd meshtastic-bot\n    ```\n2. **Install dependencies:**\n    ```sh\n    pip install -r requirements.txt\n    ```\n3. **(Optional) On Raspberry Pi:**\n    ```sh\n    sudo apt-get install libopenblas-dev\n    ```\n4. **Configure environment:**\n    - Copy `.env.example` to `.env` and fill in the required values.\n5. **Run the bot:**\n    ```sh\n    python main.py\n    ```\n\n---\n\n## Usage\n\nThe bot listens for messages and responds to commands. You can interact with it via supported Meshtastic channels.\n\n### Supported Commands\n\n| Command   | Description                                    |\n|-----------|------------------------------------------------|\n| `!help`   | Displays a list of available commands          |\n| `!hello`  | Displays information about the bot             |\n| `!ping`   | Responds with \"Pong!\"                          |\n| `!nodes`  | Displays a list of connected nodes, stats, etc |\n| `!whoami` | Displays information about the sender          |\n\n---\n\n## Extending the Bot (Development)\n\nIf you want to add new commands or responders, see the `src/commands/` and `src/responders/` directories. The codebase is structured for easy extension, but most users will not need to modify the code to run the bot.\n\n- **Commands:** Add new command classes and register them in the command factory.\n- **Responders:** Inherit from `AbstractResponder` to handle public channel messages.\n\n---\n\n## Contributing\n\nContributions are welcome! Please fork the repository and submit a pull request.\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpskillen%2Fmeshtastic-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpskillen%2Fmeshtastic-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpskillen%2Fmeshtastic-bot/lists"}