Allow to use uploadStickerFile for animated stickers.
This commit is contained in:
parent
337dbc86d9
commit
7e543cf80b
@ -5336,9 +5336,8 @@ checkPhoneNumberConfirmationCode code:string = Ok;
|
|||||||
setBotUpdatesStatus pending_update_count:int32 error_message:string = Ok;
|
setBotUpdatesStatus pending_update_count:int32 error_message:string = Ok;
|
||||||
|
|
||||||
|
|
||||||
//@description Uploads a PNG image with a sticker; for bots only; returns the uploaded file
|
//@description Uploads a PNG image with a sticker; returns the uploaded file @user_id Sticker file owner; ignored for regular users @sticker Sticker file to upload
|
||||||
//@user_id Sticker file owner @png_sticker PNG image with the sticker; must be up to 512 KB in size and fit in 512x512 square
|
uploadStickerFile user_id:int32 sticker:InputSticker = File;
|
||||||
uploadStickerFile user_id:int32 png_sticker:InputFile = File;
|
|
||||||
|
|
||||||
//@description Returns a suggested name for a new sticker set with a given title @title Sticker set title; 1-64 characters
|
//@description Returns a suggested name for a new sticker set with a given title @title Sticker set title; 1-64 characters
|
||||||
getSuggestedStickerSetName title:string = Text;
|
getSuggestedStickerSetName title:string = Text;
|
||||||
@ -5351,7 +5350,7 @@ checkStickerSetName name:string = CheckStickerSetNameResult;
|
|||||||
//@title Sticker set title; 1-64 characters
|
//@title Sticker set title; 1-64 characters
|
||||||
//@name Sticker set name. Can contain only English letters, digits and underscores. Must end with *"_by_<bot username>"* (*<bot_username>* is case insensitive) for bots; 1-64 characters
|
//@name Sticker set name. Can contain only English letters, digits and underscores. Must end with *"_by_<bot username>"* (*<bot_username>* is case insensitive) for bots; 1-64 characters
|
||||||
//@is_masks True, if stickers are masks. Animated stickers can't be masks
|
//@is_masks True, if stickers are masks. Animated stickers can't be masks
|
||||||
//@stickers List of stickers to be added to the set; must be non-empty. All stickers must be of the same type
|
//@stickers List of stickers to be added to the set; must be non-empty. All stickers must be of the same type. For animated stickers, uploadStickerFile must be used before the sticker is shown
|
||||||
//@source Source of the sticker set; may be empty if unknown
|
//@source Source of the sticker set; may be empty if unknown
|
||||||
createNewStickerSet user_id:int32 title:string name:string is_masks:Bool stickers:vector<InputSticker> source:string = StickerSet;
|
createNewStickerSet user_id:int32 title:string name:string is_masks:Bool stickers:vector<InputSticker> source:string = StickerSet;
|
||||||
|
|
||||||
|
@ -4699,8 +4699,13 @@ Result<std::tuple<FileId, bool, bool, bool>> StickersManager::prepare_input_file
|
|||||||
return std::make_tuple(file_id, is_url, is_local, is_animated);
|
return std::make_tuple(file_id, is_url, is_local, is_animated);
|
||||||
}
|
}
|
||||||
|
|
||||||
FileId StickersManager::upload_sticker_file(UserId user_id, const tl_object_ptr<td_api::InputFile> &sticker,
|
FileId StickersManager::upload_sticker_file(UserId user_id, tl_object_ptr<td_api::InputSticker> &&sticker,
|
||||||
Promise<Unit> &&promise) {
|
Promise<Unit> &&promise) {
|
||||||
|
bool is_bot = td_->auth_manager_->is_bot();
|
||||||
|
if (!is_bot) {
|
||||||
|
user_id = td_->contacts_manager_->get_my_id();
|
||||||
|
}
|
||||||
|
|
||||||
auto input_user = td_->contacts_manager_->get_input_user(user_id);
|
auto input_user = td_->contacts_manager_->get_input_user(user_id);
|
||||||
if (input_user == nullptr) {
|
if (input_user == nullptr) {
|
||||||
promise.set_error(Status::Error(3, "User not found"));
|
promise.set_error(Status::Error(3, "User not found"));
|
||||||
@ -4713,7 +4718,7 @@ FileId StickersManager::upload_sticker_file(UserId user_id, const tl_object_ptr<
|
|||||||
return FileId();
|
return FileId();
|
||||||
}
|
}
|
||||||
|
|
||||||
auto r_file_id = prepare_input_file(sticker, false, false);
|
auto r_file_id = prepare_input_sticker(sticker.get());
|
||||||
if (r_file_id.is_error()) {
|
if (r_file_id.is_error()) {
|
||||||
promise.set_error(r_file_id.move_as_error());
|
promise.set_error(r_file_id.move_as_error());
|
||||||
return FileId();
|
return FileId();
|
||||||
|
@ -163,7 +163,7 @@ class StickersManager : public Actor {
|
|||||||
void reorder_installed_sticker_sets(bool is_masks, const vector<StickerSetId> &sticker_set_ids,
|
void reorder_installed_sticker_sets(bool is_masks, const vector<StickerSetId> &sticker_set_ids,
|
||||||
Promise<Unit> &&promise);
|
Promise<Unit> &&promise);
|
||||||
|
|
||||||
FileId upload_sticker_file(UserId user_id, const tl_object_ptr<td_api::InputFile> &sticker, Promise<Unit> &&promise);
|
FileId upload_sticker_file(UserId user_id, tl_object_ptr<td_api::InputSticker> &&sticker, Promise<Unit> &&promise);
|
||||||
|
|
||||||
void get_suggested_sticker_set_name(string short_name, Promise<string> &&promise);
|
void get_suggested_sticker_set_name(string short_name, Promise<string> &&promise);
|
||||||
|
|
||||||
|
@ -2533,12 +2533,12 @@ class ChangeStickerSetRequest : public RequestOnceActor {
|
|||||||
|
|
||||||
class UploadStickerFileRequest : public RequestOnceActor {
|
class UploadStickerFileRequest : public RequestOnceActor {
|
||||||
UserId user_id_;
|
UserId user_id_;
|
||||||
tl_object_ptr<td_api::InputFile> sticker_;
|
tl_object_ptr<td_api::InputSticker> sticker_;
|
||||||
|
|
||||||
FileId file_id;
|
FileId file_id;
|
||||||
|
|
||||||
void do_run(Promise<Unit> &&promise) override {
|
void do_run(Promise<Unit> &&promise) override {
|
||||||
file_id = td->stickers_manager_->upload_sticker_file(user_id_, sticker_, std::move(promise));
|
file_id = td->stickers_manager_->upload_sticker_file(user_id_, std::move(sticker_), std::move(promise));
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_send_result() override {
|
void do_send_result() override {
|
||||||
@ -2547,7 +2547,7 @@ class UploadStickerFileRequest : public RequestOnceActor {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
UploadStickerFileRequest(ActorShared<Td> td, uint64 request_id, int32 user_id,
|
UploadStickerFileRequest(ActorShared<Td> td, uint64 request_id, int32 user_id,
|
||||||
tl_object_ptr<td_api::InputFile> &&sticker)
|
tl_object_ptr<td_api::InputSticker> &&sticker)
|
||||||
: RequestOnceActor(std::move(td), request_id), user_id_(user_id), sticker_(std::move(sticker)) {
|
: RequestOnceActor(std::move(td), request_id), user_id_(user_id), sticker_(std::move(sticker)) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -7036,8 +7036,7 @@ void Td::on_request(uint64 id, td_api::reorderInstalledStickerSets &request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, td_api::uploadStickerFile &request) {
|
void Td::on_request(uint64 id, td_api::uploadStickerFile &request) {
|
||||||
CHECK_IS_BOT();
|
CREATE_REQUEST(UploadStickerFileRequest, request.user_id_, std::move(request.sticker_));
|
||||||
CREATE_REQUEST(UploadStickerFileRequest, request.user_id_, std::move(request.png_sticker_));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, td_api::getSuggestedStickerSetName &request) {
|
void Td::on_request(uint64 id, td_api::getSuggestedStickerSetName &request) {
|
||||||
|
@ -2417,18 +2417,30 @@ class CliClient final : public Actor {
|
|||||||
} else if (op == "cssn") {
|
} else if (op == "cssn") {
|
||||||
string name = args;
|
string name = args;
|
||||||
send_request(td_api::make_object<td_api::checkStickerSetName>(name));
|
send_request(td_api::make_object<td_api::checkStickerSetName>(name));
|
||||||
} else if (op == "cnss") {
|
} else if (op == "usf" || op == "usfa") {
|
||||||
|
td_api::object_ptr<td_api::InputSticker> input_sticker;
|
||||||
|
if (op == "usfa") {
|
||||||
|
input_sticker = td_api::make_object<td_api::inputStickerAnimated>(as_input_file(args), "๐");
|
||||||
|
} else {
|
||||||
|
input_sticker = td_api::make_object<td_api::inputStickerStatic>(as_input_file(args), "๐", nullptr);
|
||||||
|
}
|
||||||
|
send_request(td_api::make_object<td_api::uploadStickerFile>(-1, std::move(input_sticker)));
|
||||||
|
} else if (op == "cnss" || op == "cnssa") {
|
||||||
string title;
|
string title;
|
||||||
string name;
|
string name;
|
||||||
string stickers;
|
string stickers;
|
||||||
get_args(args, title, name, stickers);
|
get_args(args, title, name, stickers);
|
||||||
auto input_stickers =
|
auto input_stickers =
|
||||||
transform(full_split(stickers, get_delimiter(stickers)),
|
transform(full_split(stickers, get_delimiter(stickers)),
|
||||||
[](string sticker) -> td_api::object_ptr<td_api::InputSticker> {
|
[op](string sticker) -> td_api::object_ptr<td_api::InputSticker> {
|
||||||
|
if (op == "cnssa") {
|
||||||
|
return td_api::make_object<td_api::inputStickerAnimated>(as_input_file(sticker), "๐");
|
||||||
|
} else {
|
||||||
return td_api::make_object<td_api::inputStickerStatic>(as_input_file(sticker), "๐", nullptr);
|
return td_api::make_object<td_api::inputStickerStatic>(as_input_file(sticker), "๐", nullptr);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
send_request(
|
send_request(td_api::make_object<td_api::createNewStickerSet>(my_id_, title, name, false,
|
||||||
td_api::make_object<td_api::createNewStickerSet>(my_id_, title, name, false, std::move(input_stickers), "tg_cli"));
|
std::move(input_stickers), "tg_cli"));
|
||||||
} else if (op == "sss") {
|
} else if (op == "sss") {
|
||||||
send_request(td_api::make_object<td_api::searchStickerSet>(args));
|
send_request(td_api::make_object<td_api::searchStickerSet>(args));
|
||||||
} else if (op == "siss") {
|
} else if (op == "siss") {
|
||||||
|
Loadingโฆ
Reference in New Issue
Block a user