tg

Crates.iotg
lib.rstg
version0.9.3
created_at2025-12-24 15:01:40.154931+00
updated_at2026-01-25 23:38:09.578937+00
descriptionTelegram CLI client
homepage
repositoryhttps://github.com/valeratrades/tg
max_upload_size
id2003354
size317,925
Valeriy Sakharov (valeratrades)

documentation

README

tg

Minimum Supported Rust Version crates.io docs.rs Lines Of Code
ci errors ci warnings

tg tool allows you to interact with a Telegram bot to send messages, get bot information, and list channels configured in your configuration file. I use it to keep my quick notes.

Installation

nix build

Usage

Commands

Server

Start a background server that continuously syncs messages from configured forum groups:

tg server                    # default 1m pull interval
tg server --pull-interval 5m # custom interval

The server:

  • Discovers all topics in configured forum groups at startup
  • Pulls message history via MTProto
  • Syncs new messages on the configured interval
  • Creates markdown files in ~/.local/share/tg/<group_name>/

Note: New topics created after server start won't appear until restart.

Pull

One-shot pull of messages from all configured forum groups:

tg pull
Open

Open a topic file in $EDITOR (uses fzf for pattern matching):

tg open           # fzf over all topics
tg open journal   # open if unique match, else fzf
Send

Send a message to a topic:

tg send journal "Today I'm feeling blue"
tg send -g 2244305221 -t 7 "direct by IDs"
List

List all discovered topics:

tg list
Todos

Aggregate TODOs from all topic files:

tg todos
Bot Info

Retrieve information about the bot:

tg bot-info

Configuration

Create a configuration file at ~/.config/tg.toml:

localhost_port = 59753
max_messages_per_chat = 1000

# MTProto credentials (required for pull/server)
# Get these from https://my.telegram.org/
api_id = 12345
api_hash = "your_api_hash"  # or use TELEGRAM_API_HASH env var
phone = "+1234567890"       # or use PHONE_NUMBER_FR env var
username = "@yourusername"  # for session file naming

[groups]
personal = "-1002244305221"        # forum group
work = "-1002244305221/3"          # specific topic in group

Groups are specified by chat ID (with -100 prefix for supergroups). Append /topic_id to target a specific topic.

Example config: ./examples/config.toml

Environment Variables
export TELEGRAM_MAIN_BOT_TOKEN="your_bot_token"  # for send/bot-info
export TELEGRAM_API_HASH="your_api_hash"         # alternative to config
export PHONE_NUMBER_FR="+1234567890"             # alternative to config

This repository follows my best practices and Tiger Style (except "proper capitalization for acronyms": (VsrState, not VSRState) and formatting). For project's architecture, see ARCHITECTURE.md.

License

Licensed under GLWTS
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.
Commit count: 179

cargo fmt