telek
Agent-first Telegram community management tools.
telek is an AgentCulture sibling repo.
The shape it wears — pyproject layout, CLI conventions, vendored skills, CI
pipeline — comes from
steward's sibling pattern.
Status
Alpha. v0.2 lands the Telegram surface: telek bot send,
telek group roster, telek group pin. Every write verb is dry-run by
default; pass --apply to commit.
Install
uv tool install telek
Then telek --version should work on your PATH. uv tool install is the
supported path — not pip install.
Usage
telek learn # structured self-teaching prompt for an agent
telek learn --json # same, as a JSON payload
telek explain # top-level overview
telek explain whoami # per-verb markdown
telek whoami # nick + version + bot-token-configured probe
telek whoami --json # structured payload
Every command supports --json where it produces a listing or report,
and respects the exit-code policy (0 success / 1 user error / 2 env
error). Errors carry a {code, message, remediation} shape; text mode
renders as error: ... + hint: ... on stderr.
Telegram verbs (requires pip install 'telek[telegram]')
# read-only: count + admins + bot's own permissions
telek group roster --chat @announcements --json
# write (dry-run by default; --apply to commit)
telek bot send --chat @announcements --text "hello" --parse-mode markdown
telek bot send --chat @announcements --text "hello" --apply
# pin / unpin (also dry-run by default)
telek group pin --chat @announcements --message 123 --apply
telek group pin --chat @announcements --unpin --apply
Configuration
| Variable | Purpose |
|---|---|
TELEK_BOT_TOKEN |
Telegram bot token. Required for write verbs once they land. Never logged. |
Bot tokens, group IDs, and webhook secrets must never be committed to
the repo — keep them in repo secrets or a git-ignored .env.
Tokens are loaded from os.environ first, then from a .env file in the
current directory, then from a .env at the nearest enclosing git root.
Process env always wins. .env files that are world-writable on POSIX are
skipped with a warning.
Testing
The unit suite runs offline. Run it with:
uv run pytest -v
Live smoke tests
Optional live tests in tests/test_telegram_live.py exercise bot send /
group roster / group pin / unpin against the real Bot API. Enable by
exporting two numeric chat IDs the bot can reach:
export TELEK_LIVE_TEST_USER_CHAT=<numeric user chat_id>
export TELEK_LIVE_TEST_GROUP_CHAT=<numeric group chat_id>
uv run pytest tests/test_telegram_live.py -v
The bot must be a member of the user DM (the user must have started a chat with the bot) and a member-admin (with Pin Messages) in the group. CI does not set these env vars, so live tests skip in CI.
Project shape
See CLAUDE.md for the directory layout, build / test /
publish commands, and the sibling-pattern conventions telek inherits.
Contributing
Every PR must bump the version in pyproject.toml and prepend a
Keep a Changelog entry to CHANGELOG.md.
The version-check CI job enforces this. Use the vendored version-bump
skill:
python .claude/skills/version-bump/scripts/bump.py patch # or minor / major
Metadata
Release files for telek 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| telek-0.3.0.tar.gz | 113.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| telek-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 136.0 kB
Release files / telek-0.3.0.tar.gz
| Download URL | telek-0.3.0.tar.gz |
|---|---|
| Size | 113.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aa752b1f666217ebdd770666bc068c8e591fe708d82a8e55bb748f9467121a34
|
|
BLAKE2b-256 checksum How to use checksums |
e65fa96603a6ebe9ee3e093bb8c530f350805266117f7f38ba1cd3579ce173f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / telek-0.3.0-py3-none-any.whl
| Download URL | telek-0.3.0-py3-none-any.whl |
|---|---|
| Size | 22.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6e1cb17cb46a804371245429f7fb4ac3b5d59fedc2aa3cc954b0399be5b622b8
|
|
BLAKE2b-256 checksum How to use checksums |
746fb40cbdbac2699422336619909d67906f472f5323cdba645e8e4a49d158f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for telek 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.