idbot-api
v1.0.0
Published
Types package for username_to_id_bot telegram bot API
Downloads
5
Readme
idbot-api-gram
API to resolve Telegram usernames to IDs and basic channel info.
Run
- Dev:
npm run dev - Build:
npm run build - Start:
npm start(after build)
Server binds to HOST:PORT (defaults 127.0.0.1:3456).
Environment variables:
API_ID(required)API_HASH(required)TOKEN1,TOKEN2, ... (at leastTOKEN1required)HOST(default127.0.0.1)PORT(default3456)SESSIONS_FILE(default<cwd>/data/session.json)USER_CACHE_TTL_MS(default300000i.e. 5 minutes)MAX_ACTIVE_SESSIONS(default4)REQUEST_TIMEOUT_MS(default3000ms)ENABLE_TEST_ENDPOINTS(default0)ENABLE_TEST_UI(default0)
Minimal manual testing
Open the tester UI (served from public/):
- Browser:
http://127.0.0.1:3456/- Click Ping to check readiness or bans
- Enter username (with or without
@) and click Check - Try the provided sample links (e.g.,
telegram,durov,eth_jobs)
Direct endpoints:
GET /ping→{ status: "ok" }or{ status: "banned", retryAfterSeconds }(also setsRetry-Afterheader)GET /username/:username→ JSON describing user or channel, or an error shape- When all sessions are banned: HTTP 429 with
{ status: "banned", retryAfterSeconds }andRetry-Afterheader
- When all sessions are banned: HTTP 429 with
Minimal automated smoke test
Ensure server is running, then:
npm run smokeEnvironment overrides (optional):
HOST=127.0.0.1 PORT=3456 npm run smokeThe smoke test accepts HTTP 200 or 429 for resilience; on 429 it validates retry info.
Docker
Build:
docker build -t idbot-api .Run (local UI disabled by default):
docker run --rm \
-e API_ID=123456 -e API_HASH=your_api_hash \
-e TOKEN1=111111111:token_a \
-e HOST=0.0.0.0 -e PORT=3456 \
-p 3456:3456 \
-v $(pwd)/data:/app/data \
idbot-apiEnable test UI if desired:
docker run --rm -e ENABLE_TEST_UI=1 ... idbot-apiStress test (real or mock)
Real mode (will hit Telegram via your configured tokens; can trigger real limits):
npm run dev
npm run stress -- --rate=4 --duration=30Mock mode (no Telegram traffic; simulate bans with dev endpoints):
ENABLE_TEST_ENDPOINTS=1 npm run dev
npm run stress -- --mock --rate=10 --duration=15Notes:
--rateis requests per second target (approximate)--durationis test length in seconds- When mock is enabled, the server exposes
POST /test/ban-all/:secondsandPOST /test/reset-bans
