BotApi: fixed update_chat_id() — replaced absint() with intval() so negative group chat IDs are preserved correctly (group support)
BotApi: send_message() accepts new optional $reply_to_message_id parameter — sends the reply using Bot API 7.0+ reply_parameters
BotApi: new get_me() method — fetches bot info via getMe and caches per-token with a 24-hour transient
BotApi / Bot: run_command() parses the command parameter — /start payload sets $bot->command_param = ‘payload’ for use in command callbacks; max command+param length increased from 100 to 200
0.3.1
Broadcast API: new campaign_key column for deduplication; new tgbot_broadcast() helper for programmatic broadcasts from child plugins
Audience registry: tgbot_audiences filter lets child plugins register named recipient segments; Broadcast UI shows a segment selector
Locale mapping: added uk → uk_UA locale code
0.3.0
New Broadcast feature: send messages to WordPress users with Telegram usernames from a dedicated admin page (Telegram Bot → Broadcast)
Per-locale message composition — write separate texts for each language used by your users
Message format selector: Plain text, HTML, or MarkdownV2
Cron-batched delivery (200 messages/batch, ~20 msg/sec) — safe for large user bases without blocking the site
Real-time progress bar with sent/failed counts and estimated time remaining
Broadcast history table on the Broadcast page; per-user broadcast history on the user profile page
New top-level “Telegram Bot” admin menu with Settings and Broadcast subpages
New BotApi method: send_plain_message() — send a message without parse_mode
Refactored broadcast admin code into TGBotAdminBroadcast class for consistency
0.2.43
Auto-generate webhook secret on plugin activation so the mandatory secret check always has a value
Fixed incoming message type detection: reuse already-parsed request object instead of re-calling get_request()
0.2.42
Webhook secret is now required: all requests without a valid X-Telegram-Bot-Api-Secret-Token header are rejected
Sanitize incoming text fields (message text, caption, callback data) before dispatching to action hooks
Validate update_id presence after JSON decode
Replaced direct curl in send_multipart_request() with wp_remote_post() + http_api_curl hook
0.2.41
Renamed plugin folder and main file to match the approved WordPress.org slug makarski-bot-connector-for-telegram
0.2.40
Webhook secret token support (X-Telegram-Bot-Api-Secret-Token header validation)
Input sanitization improvements: absint() for chat_id, sanitize_textarea_field() for text in BotApi
Core::set_current_user() hardened with get_userdata() check and absint()
Added == External Services == section to readme.txt
0.2.30
Renamed tgbot_process_multimedia_message to tgbot_message; added deprecated alias for backward compatibility
Added tgbot_raw_message hook for advanced use cases
Added media_group_id field to normalized message object
0.2.28
Fixed PHP 8.5 deprecation: removed curl_close() (no-op since PHP 8.0)
Fixed implicit nullable parameter in send_document()