Framework-agnostic PHP SDK for Telegram Bot API integration.
It provides:
TelegramBotClientfor API calls (getUpdates,sendMessage,setWebhook, etc.)- Typed Telegram update/message models
- Token-safe logging and exception message obfuscation utilities
- PHP 8.4+
composer require poor-plebs/telegram-bot-sdk<?php
declare(strict_types=1);
use PoorPlebs\TelegramBotSdk\TelegramBot\TelegramBotClient;
use Psr\SimpleCache\CacheInterface;
/** @var CacheInterface $cache */
$client = new TelegramBotClient(
cache: $cache,
token: '123456:YOUR_BOT_TOKEN',
chatId: 123456789,
);
$client->sendMessage('Hello from SDK')->wait();composer lint
composer cs
composer static
composer testBuild and use the local dev container:
docker compose build phpRun any composer command in Docker:
bin/dc install
bin/dc test
bin/dc static
bin/dc ci- Versioning follows SemVer (
MAJOR.MINOR.PATCH) with tags without avprefix (for example1.2.0). CHANGELOG.mdis intentionally not used; release notes are generated from conventional commits and tags.- Keep
composer.jsonarchive.excludeand.gitattributesexport-ignorealigned so dist artifacts stay clean.
# run quality gates
bin/dc ci
# create release notes file for the tag
mkdir -p .github/release-notes
cat > .github/release-notes/1.0.0.md <<'EOF'
1.0.0
- Added: ...
- Changed: ...
- Fixed: ...
EOF
# create and push annotated SemVer tag without "v"
bin/release-tag 1.0.0 .github/release-notes/1.0.0.md --push
# create GitHub release from tag notes
gh release create 1.0.0 --notes-from-tagThis repository includes .github/workflows/release.yml:
- Trigger: push a SemVer tag without
vprefix (1.2.3,1.2.3-rc.1). - Action: create a GitHub release using the tag message as release notes.
Major work and investigations are tracked in docs/ using dated files:
yyyy-mm-dd_[descriptive_file_name].md
See docs/README.md for conventions.