Changelog¶
The format follows Keep a Changelog and the version
numbers follow Semantic Versioning, with the rules in
docs/project/versioning.md.
[0.2.0] - 2026-11-15¶
First release as hidesay-bot. Versions 0.1.0 and 0.1.1 came out under the app’s old name, as PGPCbot: this is the same library, and what changes for code written against it is under “Changed”.
Added¶
AsyncClientandClient: all 22 operations of Bot API 1.0.0 (openapi.json), plus media downloads, with typed models, client-side checks that match the server’s, retries with backoff and a stablesendId, waiting on429, and a client-side rate limiter.BotandSyncBot: handlers for messages, commands, buttons, edited and deleted messages, and membership changes; filters, routers, middleware, error handlers, automatic answers to button presses; startup and shutdown hooks;request_stop()from a handler or another thread.resolve(), forGET /resolve/{username}: the handle somebody writes at a bot, turned into an id. One pool of names covers people, groups and channels, so the answer says which it wasResolved, withHandleKind, aChatPeerfor a person or aChatCardfor a public group or channel. A leading@and the case are taken off before the request goes out, andUsernameNotFoundError(404username_not_found) is what a free handle, a group with no public name and a closed account all answer.
OpenPGP: making, loading, protecting and rotating the bot’s key; automatic encryption and signing in protected chats; decryption and signature checks on incoming messages, including the compressed messages phones send; reading the app’s internal message format; downloading and decrypting attachments; pinning keys the first time they are seen.
Long polling and an ASGI webhook (FastAPI, Starlette, uvicorn) with “at least once” delivery, a durable
SQLiteStoragequeue, and failed updates kept so they can be retried.The
hidesay-botcommand line:keygen,fingerprint,whoami,publish-key,webhook.The documentation website at https://vntcore.github.io/hidesay-bot/, built from the docstrings and the pages in
docs/.
Changed¶
The package is
hidesay-boton PyPI, it is imported ashidesay_botand the command ishidesay-bot.The environment variables are
HIDESAY_BOT_TOKEN,HIDESAY_API,HIDESAY_BOT_KEYand the rest of the family, in place ofPGPCHAT_*.The default server is
https://api.hidesay.com.Webhook deliveries carry the secret in
X-Hidesay-Bot-Api-Secret-Token, and a refused one is answered withWWW-Authenticate: Hidesay-Secret-Token.PGPCbotErrorisHidesayBotError, and the loggers arehidesay_bot.*.