https://github.com/programveins/menugram
A telegram macOS menu app
https://github.com/programveins/menugram
Last synced: 10 days ago
JSON representation
A telegram macOS menu app
- Host: GitHub
- URL: https://github.com/programveins/menugram
- Owner: programVeins
- Created: 2026-03-23T20:11:02.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-10T09:39:07.000Z (2 months ago)
- Last Synced: 2026-04-10T11:29:26.085Z (2 months ago)
- Language: Swift
- Size: 788 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MenuGram
A lightweight macOS menu bar app for quick Telegram messaging — built for fast back-and-forth with AI agents like [OpenClaw](https://github.com/ArcadeLabsInc/openclaw), [PicoClaw](https://github.com/ArcadeLabsInc/picoclaw), and similar bots.
Lives in your menu bar, opens with a click, and gets out of your way.
## Features
- Menu bar app — no dock icon, always one click away
- Text and voice message support (record & send voice notes)
- Voice note playback with waveform visualization
- Live typing/recording indicators
- Auto-connects to your configured bot on launch
## Prerequisites
- macOS 15.0+
- Xcode 26+
- A Telegram account
- A Telegram API ID & Hash (free, from [my.telegram.org](https://my.telegram.org))
- A Telegram bot you want to chat with
## Setup
### 1. Get Telegram API Credentials
1. Go to [my.telegram.org](https://my.telegram.org) and log in
2. Click **API development tools**
3. Create a new application (any name/platform)
4. Note your **api_id** and **api_hash**
### 2. Configure Environment Variables in Xcode Scheme
1. Open `MenuGram.xcodeproj` in Xcode
2. Go to **Product > Scheme > Edit Scheme…** (or `Cmd+<`)
3. Select **Run** in the sidebar, then the **Arguments** tab
4. Under **Environment Variables**, add the following:
| Variable | Value | Description |
|----------|-------|-------------|
| `TELEGRAM_API_ID` | `12345678` | Your API ID from step 1 |
| `TELEGRAM_API_HASH` | `your_api_hash_here` | Your API hash from step 1 |
| `BOT_NAME` | `YourBotName` | Display name of the bot/contact to auto-open on launch |
`BOT_NAME` is the display name of the Telegram bot/contact you want MenuGram to auto-open on launch. For example, if your bot is called "PicoClaw", set `BOT_NAME=PicoClaw`.
### 3. Build & Run
1. Wait for Swift Package Manager to resolve dependencies (TDLibKit)
2. In Signing & Capabilities, enable **Audio Input** under App Sandbox
3. Build and run (`Cmd+R`)
4. Sign in with your phone number when prompted
## How It Works
MenuGram uses [TDLib](https://github.com/tdlib/td) (via [TDLibKit](https://github.com/Swiftgram/TDLibKit)) as the Telegram client library. It authenticates as a full Telegram user (not a bot), so you can send and receive messages just like the official app.
On launch, it searches your chat list for the bot name specified in `BOT_NAME` and opens that conversation automatically. You can send text or voice messages, and see real-time typing indicators from the other side.
## Project Structure
```
MenuGram/
├── Constants.swift # App config, reads env vars from scheme
├── Models/
│ ├── ChatItem.swift # Chat list model
│ └── MessageItem.swift # Message model
├── Services/
│ ├── TelegramService.swift # TDLib client wrapper
│ └── OGGOpusConverter.swift # OGG Opus to WAV conversion
└── Views/
├── RootView.swift # Top-level navigation
├── Auth/ # Login flow (phone, code, password)
└── Chat/
├── ChatDetailView.swift # Message list + header
├── MessageBubbleView.swift # Individual message bubbles
├── MessageInputView.swift # Text + voice input
└── VoiceNoteView.swift # Voice message playback
```
## License
MIT