danog/tg-file-decoder

解码Telegram机器人API文件ID

资助包维护!
danog

安装次数: 501,856

依赖项: 7

建议者: 0

安全: 0

星标: 60

关注者: 11

分支: 8

开放问题: 0

类型:项目

1.0.1 2024-04-19 21:31 UTC

This package is auto-updated.

Last update: 2024-09-19 22:20:05 UTC


README

build Psalm coverage Psalm level 1

解码和编码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文档。