BareGit

Add README with documentation and persistence note

Author: MetroWind <chris.corsair@gmail.com>
Date: Mon Jan 12 12:07:15 2026 -0800
Commit: 495d91afec13bd9af42c25d3b51fa72e9055611f

Changes

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f842b11
--- /dev/null
+++ b/README.md
@@ -0,0 +1,99 @@
+# Telegrammer
+
+Telegrammer is a high-performance C++ API Gateway for Telegram Bots. It acts as a bridge between the Telegram Bot API and your local applications or microservices.
+
+Instead of embedding Telegram logic into every service, you run **Telegrammer** as a standalone daemon. Your applications can then simply:
+1.  **POST** JSON to Telegrammer to send messages.
+2.  **Subscribe** via webhooks to receive incoming messages from specific chats.
+
+## Features
+
+*   **Simple HTTP API**: Send messages using a clean JSON REST interface.
+*   **Webhook Dispatcher**: Converts Telegram Long Polling into local HTTP callbacks (webhooks), allowing your internal services to be event-driven.
+*   **Username Resolution**: Automatically resolves Telegram usernames to `chat_id` based on recent activity, allowing you to address users by name.
+*   **High Performance**: Built with C++23 and `libmw`, utilizing asynchronous I/O where appropriate.
+
+## Prerequisites
+
+*   C++23 compatible compiler (GCC 14+, Clang 18+)
+*   CMake 3.24+
+*   OpenSSL Development Libraries
+*   Git
+
+## Build
+
+This project uses CMake and fetches dependencies (like `libmw`, `nlohmann/json`, `spdlog`) automatically.
+
+```bash
+mkdir build
+cd build
+cmake ..
+make -j$(nproc)
+```
+
+## Usage
+
+Run the executable from the build directory. You must provide your Telegram Bot Token.
+
+```bash
+./telegrammer --token "YOUR_TELEGRAM_BOT_TOKEN"
+```
+
+### Command Line Options
+
+| Option | Description | Default |
+| :--- | :--- | :--- |
+| `-t, --token` | **Required.** Your Telegram Bot Token. | |
+| `-p, --port` | Port to listen on. | `8080` |
+| `-h, --host` | Interface to bind to. | `0.0.0.0` |
+| `--help` | Show help message. | |
+
+## API Reference
+
+### 1. Send Message (`POST /send`)
+
+Send a text message to a chat. You can target a user by `chat_id` OR `username`.
+
+**Payload:**
+
+```json
+{
+  "chat_id": 123456789,
+  "text": "Hello form the API!"
+}
+```
+
+**Using Username:**
+*Note: The user must have previously messaged the bot for the username resolution to work.*
+
+```json
+{
+  "username": "some_user",
+  "text": "Hello user!"
+}
+```
+
+### 2. Subscribe (`POST /subscribe`)
+
+Register a callback URL for a specific chat. When the bot receives a message in that chat, it will POST the full Telegram Message JSON to your URL.
+
+> **Note:** Subscriptions are currently stored in memory and do not persist across application restarts.
+
+**Payload:**
+
+```json
+{
+  "chat_id": 123456789,
+  "callback_url": "http://localhost:9090/my-webhook"
+}
+```
+
+**Callback Payload:**
+Your server will receive a POST request containing the standard [Telegram Message Object](https://core.telegram.org/bots/api#message).
+
+## Dependencies
+
+*   [libmw](https://github.com/MetroWind/libmw) - HTTP Server/Client & Utilities.
+*   [nlohmann/json](https://github.com/nlohmann/json) - JSON Parsing.
+*   [spdlog](https://github.com/gabime/spdlog) - Logging.
+*   [cxxopts](https://github.com/jarro2783/cxxopts) - CLI Argument Parsing.