danog / tg-file-decoder
解码Telegram机器人API文件ID
1.0.1
2024-04-19 21:31 UTC
Requires
- php-64bit: >=8.2
Requires (Dev)
- amphp/php-cs-fixer-config: ^2
- danog/phpdoc: ^0.1.22
- phpunit/phpunit: ^11
- vimeo/psalm: dev-master
README
解码和编码Telegram机器人API文件ID!
这个库最初是为MadelineProto创建的,这是一个用于Telegram MTProto协议的异步PHP客户端API。
安装
composer require danog/tg-file-decoder
示例
解码机器人API文件ID
use danog\Decoder\FileId; use danog\Decoder\UniqueFileId; $fileId = FileId::fromBotAPI('CAACAgQAAxkDAAJEsl44nl3yxPZ8biI8uhaA7rbQceOSAAKtAQACsTisUXvMEbVnTuQkGAQ'); $version = $fileId->version; // bot API file ID version, usually 4 $subVersion = $fileId->subVersion; // bot API file ID subversion, equivalent to a specific tdlib version $dcId = $fileId->dcId; // On which datacenter is this file stored $type = $fileId->type; // File type $id = $fileId->id; $accessHash = $fileId->accessHash; $fileReference = $fileId->fileReference; // File reference, https://core.telegram.org/api/file_reference $url = $fileId->url; // URL, file IDs with encoded webLocation // You can also use hasFileReference and hasUrl $fileIdReencoded = $fileId->getBotAPI(); // CAACAgQAAxkDAAJEsl44nl3yxPZ8biI8uhaA7rbQceOSAAKtAQACsTisUXvMEbVnTuQkGAQ $fileIdReencoded = (string) $fileId; // CAACAgQAAxkDAAJEsl44nl3yxPZ8biI8uhaA7rbQceOSAAKtAQACsTisUXvMEbVnTuQkGAQ // For photos, thumbnails if ($fileId->getType() <= FileIdType::PHOTO->value) $volumeId = $fileId->volumeId; $localId = $fileId->localId; $photoSizeSource = $fileId->photoSizeSource; // PhotoSizeSource object $photoSizeSource->dialogId; $photoSizeSource->stickerSetId; // And more, depending on photosize source
机器人API子版本,自文件ID v4起存在,等同于机器人API在服务器端使用的tdlib版本。
关于文件类型,请参阅文件类型。关于照片大小来源,请参阅此处。
解码机器人API唯一文件ID
$uniqueFileId = UniqueFileId::fromUniqueBotAPI('AgADrQEAArE4rFE'); $type = $fileId->type; // Unique file type $id = $uniqueFileId->id; $url = $uniqueFileId->url; // URL, for unique file IDs with encoded webLocation // For photos $volumeId = $uniqueFileId->volumeId; $localId = $uniqueFileId->localId;
关于唯一文件类型,请参阅唯一类型。
从完整文件ID中提取唯一文件ID
$full = 'CAACAgQAAxkDAAJEsl44nl3yxPZ8biI8uhaA7rbQceOSAAKtAQACsTisUXvMEbVnTuQkGAQ'; $unique = 'AgADrQEAArE4rFE'; $fileId = FileId::fromBotAPI($full); $uniqueFileId = UniqueFileId::fromUniqueBotAPI($unique); $uniqueFileIdExtracted1 = UniqueFileId::fromBotAPI($full); $uniqueFileIdExtracted2 = $fileId->getUniqueBotAPI(); var_dump(((string) $uniqueFileId) === ((string) $uniqueFileIdExtracted1)); // true, always AgADrQEAArE4rFE! var_dump(((string) $uniqueFileId) === ((string) $uniqueFileIdExtracted2)); // true, always AgADrQEAArE4rFE!
照片大小来源
$fileId = FileId::fromString('CAACAgQAAxkDAAJEsl44nl3yxPZ8biI8uhaA7rbQceOSAAKtAQACsTisUXvMEbVnTuQkGAQ'); $photoSizeSource = $fileId->photoSizeSource; // PhotoSizeSource object $sourceType = $photoSizeSource->type; // If $sourceType === PHOTOSIZE_SOURCE_DIALOGPHOTO_SMALL|PHOTOSIZE_SOURCE_DIALOGPHOTO_SMALL or // If $photoSizeSource instanceof PhotoSizeSourceDialogPhoto $dialogId = $photoSizeSource->dialogId; $dialogId = $photoSizeSource->sticketSetId;
PhotoSizeSource
抽象基类指示从聊天照片、照片、stickerset缩略图、文件缩略图中特定照片大小的来源。
点击此处查看完整的PhotoSizeSource
类型列表。
构建自定义文件ID
$fileId = new FileId( type: FileIdType::STICKER, id: $id, accessHash: $accessHash, // and so on... ); $encoded = (string) $fileId; // CAACAgQAAxkDAAJEsl44nl3yxPZ8biI8uhaA7rbQceOSAAKtAQACsTisUXvMEbVnTuQkGAQ, or something
机器人API文件ID类型
文件类型是PHP枚举,表示文件的类型,danog\Decoder\FileIdType。
点击此处查看文件ID类型的完整列表。
枚举还提供了一个FileIdType::from
方法,该方法可以用来从文件类型的字符串版本中获取正确的案例,通常用于机器人API文件对象。
机器人API唯一文件ID类型
唯一文件类型是PHP枚举,唯一指示唯一文件,danog\Decoder\UniqueFileIdType。
点击此处查看文件ID类型的完整列表。
完整API文档
点击此处查看完整的API文档。