Move out StickerType from inputSticker.
This commit is contained in:
parent
342bf8c41f
commit
b5468e4cac
@ -4023,9 +4023,8 @@ proxies proxies:vector<proxy> = Proxies;
|
||||
//@sticker File with the sticker; must fit in a 512x512 square. For WEBP stickers and masks the file must be in PNG format, which will be converted to WEBP server-side. Otherwise, the file must be local or uploaded within a week. See https://core.telegram.org/animated_stickers#technical-requirements for technical requirements
|
||||
//@emojis Emojis corresponding to the sticker
|
||||
//@format Sticker format
|
||||
//@type Sticker type
|
||||
//@mask_position Position where the mask is placed; pass null if not specified
|
||||
inputSticker sticker:InputFile emojis:string format:StickerFormat type:StickerType mask_position:maskPosition = InputSticker;
|
||||
inputSticker sticker:InputFile emojis:string format:StickerFormat mask_position:maskPosition = InputSticker;
|
||||
|
||||
|
||||
//@description Represents a date range @start_date Point in time (Unix timestamp) at which the date range begins @end_date Point in time (Unix timestamp) at which the date range ends
|
||||
@ -6412,9 +6411,10 @@ checkStickerSetName name:string = CheckStickerSetNameResult;
|
||||
//@user_id Sticker set owner; ignored for regular users
|
||||
//@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
|
||||
//@sticker_type Type of the stickers in the set
|
||||
//@stickers List of stickers to be added to the set; must be non-empty. All stickers must have the same format. For TGS stickers, uploadStickerFile must be used before the sticker is shown
|
||||
//@source Source of the sticker set; may be empty if unknown
|
||||
createNewStickerSet user_id:int53 title:string name:string stickers:vector<inputSticker> source:string = StickerSet;
|
||||
createNewStickerSet user_id:int53 title:string name:string sticker_type:StickerType stickers:vector<inputSticker> source:string = StickerSet;
|
||||
|
||||
//@description Adds a new sticker to a set; for bots only. Returns the sticker set
|
||||
//@user_id Sticker set owner @name Sticker set name @sticker Sticker to add to the set
|
||||
|
@ -6095,7 +6095,7 @@ void StickersManager::reorder_installed_sticker_sets(StickerType sticker_type,
|
||||
}
|
||||
|
||||
Result<std::tuple<FileId, bool, bool, StickerFormat>> StickersManager::prepare_input_sticker(
|
||||
td_api::inputSticker *sticker) {
|
||||
td_api::inputSticker *sticker, StickerType sticker_type) {
|
||||
if (sticker == nullptr) {
|
||||
return Status::Error(400, "Input sticker must be non-empty");
|
||||
}
|
||||
@ -6108,8 +6108,7 @@ Result<std::tuple<FileId, bool, bool, StickerFormat>> StickersManager::prepare_i
|
||||
return Status::Error(400, "Sticker format must be non-empty");
|
||||
}
|
||||
|
||||
return prepare_input_file(sticker->sticker_, get_sticker_format(sticker->format_),
|
||||
::td::get_sticker_type(sticker->type_), false);
|
||||
return prepare_input_file(sticker->sticker_, get_sticker_format(sticker->format_), sticker_type, false);
|
||||
}
|
||||
|
||||
Result<std::tuple<FileId, bool, bool, StickerFormat>> StickersManager::prepare_input_file(
|
||||
@ -6173,7 +6172,8 @@ FileId StickersManager::upload_sticker_file(UserId user_id, tl_object_ptr<td_api
|
||||
return FileId();
|
||||
}
|
||||
|
||||
auto r_file_id = prepare_input_sticker(sticker.get());
|
||||
// StickerType::Regular has less restrictions
|
||||
auto r_file_id = prepare_input_sticker(sticker.get(), StickerType::Regular);
|
||||
if (r_file_id.is_error()) {
|
||||
promise.set_error(r_file_id.move_as_error());
|
||||
return FileId();
|
||||
@ -6279,8 +6279,9 @@ td_api::object_ptr<td_api::CheckStickerSetNameResult> StickersManager::get_check
|
||||
}
|
||||
|
||||
void StickersManager::create_new_sticker_set(UserId user_id, string &title, string &short_name,
|
||||
vector<tl_object_ptr<td_api::inputSticker>> &&stickers, string software,
|
||||
Promise<Unit> &&promise) {
|
||||
StickerType sticker_type,
|
||||
vector<td_api::object_ptr<td_api::inputSticker>> &&stickers,
|
||||
string software, Promise<Unit> &&promise) {
|
||||
bool is_bot = td_->auth_manager_->is_bot();
|
||||
if (!is_bot) {
|
||||
user_id = td_->contacts_manager_->get_my_id();
|
||||
@ -6307,10 +6308,9 @@ void StickersManager::create_new_sticker_set(UserId user_id, string &title, stri
|
||||
vector<FileId> local_file_ids;
|
||||
vector<FileId> url_file_ids;
|
||||
FlatHashSet<int32> sticker_formats;
|
||||
FlatHashSet<int32> sticker_types;
|
||||
StickerFormat sticker_format = StickerFormat::Unknown;
|
||||
for (auto &sticker : stickers) {
|
||||
auto r_file_id = prepare_input_sticker(sticker.get());
|
||||
auto r_file_id = prepare_input_sticker(sticker.get(), sticker_type);
|
||||
if (r_file_id.is_error()) {
|
||||
return promise.set_error(r_file_id.move_as_error());
|
||||
}
|
||||
@ -6322,7 +6322,6 @@ void StickersManager::create_new_sticker_set(UserId user_id, string &title, stri
|
||||
return promise.set_error(Status::Error(400, "Animated stickers can't be uploaded by URL"));
|
||||
}
|
||||
sticker_formats.insert(static_cast<int32>(get_sticker_format(sticker->format_)) + 1);
|
||||
sticker_types.insert(static_cast<int32>(::td::get_sticker_type(sticker->type_)) + 1);
|
||||
|
||||
file_ids.push_back(file_id);
|
||||
if (is_url) {
|
||||
@ -6334,15 +6333,13 @@ void StickersManager::create_new_sticker_set(UserId user_id, string &title, stri
|
||||
if (sticker_formats.size() != 1) {
|
||||
return promise.set_error(Status::Error(400, "All stickers must be of the same format"));
|
||||
}
|
||||
if (sticker_types.size() != 1) {
|
||||
return promise.set_error(Status::Error(400, "All stickers must be of the same type"));
|
||||
}
|
||||
|
||||
auto pending_new_sticker_set = make_unique<PendingNewStickerSet>();
|
||||
pending_new_sticker_set->user_id = user_id;
|
||||
pending_new_sticker_set->title = std::move(title);
|
||||
pending_new_sticker_set->short_name = short_name;
|
||||
pending_new_sticker_set->sticker_format = sticker_format;
|
||||
pending_new_sticker_set->sticker_type = sticker_type;
|
||||
pending_new_sticker_set->file_ids = std::move(file_ids);
|
||||
pending_new_sticker_set->stickers = std::move(stickers);
|
||||
pending_new_sticker_set->software = std::move(software);
|
||||
@ -6510,8 +6507,8 @@ void StickersManager::on_new_stickers_uploaded(int64 random_id, Result<Unit> res
|
||||
auto &promise = pending_new_sticker_set->promise;
|
||||
TRY_RESULT_PROMISE(promise, input_user, td_->contacts_manager_->get_input_user(pending_new_sticker_set->user_id));
|
||||
|
||||
StickerType sticker_type = ::td::get_sticker_type(pending_new_sticker_set->stickers[0]->type_);
|
||||
StickerFormat sticker_format = pending_new_sticker_set->sticker_format;
|
||||
StickerType sticker_type = pending_new_sticker_set->sticker_type;
|
||||
|
||||
auto sticker_count = pending_new_sticker_set->stickers.size();
|
||||
vector<tl_object_ptr<telegram_api::inputStickerSetItem>> input_stickers;
|
||||
@ -6564,7 +6561,7 @@ void StickersManager::do_add_sticker_to_set(UserId user_id, string short_name,
|
||||
return promise.set_error(Status::Error(400, "Sticker set not found"));
|
||||
}
|
||||
|
||||
auto r_file_id = prepare_input_sticker(sticker.get());
|
||||
auto r_file_id = prepare_input_sticker(sticker.get(), sticker_set->sticker_type);
|
||||
if (r_file_id.is_error()) {
|
||||
return promise.set_error(r_file_id.move_as_error());
|
||||
}
|
||||
|
@ -230,8 +230,8 @@ class StickersManager final : public Actor {
|
||||
static td_api::object_ptr<td_api::CheckStickerSetNameResult> get_check_sticker_set_name_result_object(
|
||||
CheckStickerSetNameResult result);
|
||||
|
||||
void create_new_sticker_set(UserId user_id, string &title, string &short_name,
|
||||
vector<tl_object_ptr<td_api::inputSticker>> &&stickers, string software,
|
||||
void create_new_sticker_set(UserId user_id, string &title, string &short_name, StickerType sticker_type,
|
||||
vector<td_api::object_ptr<td_api::inputSticker>> &&stickers, string software,
|
||||
Promise<Unit> &&promise);
|
||||
|
||||
void add_sticker_to_set(UserId user_id, string &short_name, tl_object_ptr<td_api::inputSticker> &&sticker,
|
||||
@ -425,6 +425,7 @@ class StickersManager final : public Actor {
|
||||
UserId user_id;
|
||||
string title;
|
||||
string short_name;
|
||||
StickerType sticker_type = StickerType::Regular;
|
||||
StickerFormat sticker_format = StickerFormat::Unknown;
|
||||
vector<FileId> file_ids;
|
||||
vector<tl_object_ptr<td_api::inputSticker>> stickers;
|
||||
@ -674,7 +675,8 @@ class StickersManager final : public Actor {
|
||||
Result<std::tuple<FileId, bool, bool, StickerFormat>> prepare_input_file(
|
||||
const tl_object_ptr<td_api::InputFile> &input_file, StickerFormat format, StickerType type, bool for_thumbnail);
|
||||
|
||||
Result<std::tuple<FileId, bool, bool, StickerFormat>> prepare_input_sticker(td_api::inputSticker *sticker);
|
||||
Result<std::tuple<FileId, bool, bool, StickerFormat>> prepare_input_sticker(td_api::inputSticker *sticker,
|
||||
StickerType sticker_type);
|
||||
|
||||
tl_object_ptr<telegram_api::inputStickerSetItem> get_input_sticker(const td_api::inputSticker *sticker,
|
||||
FileId file_id) const;
|
||||
|
@ -2236,12 +2236,13 @@ class CreateNewStickerSetRequest final : public RequestOnceActor {
|
||||
UserId user_id_;
|
||||
string title_;
|
||||
string name_;
|
||||
vector<tl_object_ptr<td_api::inputSticker>> stickers_;
|
||||
StickerType sticker_type_;
|
||||
vector<td_api::object_ptr<td_api::inputSticker>> stickers_;
|
||||
string software_;
|
||||
|
||||
void do_run(Promise<Unit> &&promise) final {
|
||||
td_->stickers_manager_->create_new_sticker_set(user_id_, title_, name_, std::move(stickers_), std::move(software_),
|
||||
std::move(promise));
|
||||
td_->stickers_manager_->create_new_sticker_set(user_id_, title_, name_, sticker_type_, std::move(stickers_),
|
||||
std::move(software_), std::move(promise));
|
||||
}
|
||||
|
||||
void do_send_result() final {
|
||||
@ -2254,11 +2255,13 @@ class CreateNewStickerSetRequest final : public RequestOnceActor {
|
||||
|
||||
public:
|
||||
CreateNewStickerSetRequest(ActorShared<Td> td, uint64 request_id, int64 user_id, string &&title, string &&name,
|
||||
vector<tl_object_ptr<td_api::inputSticker>> &&stickers, string &&software)
|
||||
StickerType sticker_type, vector<td_api::object_ptr<td_api::inputSticker>> &&stickers,
|
||||
string &&software)
|
||||
: RequestOnceActor(std::move(td), request_id)
|
||||
, user_id_(user_id)
|
||||
, title_(std::move(title))
|
||||
, name_(std::move(name))
|
||||
, sticker_type_(sticker_type)
|
||||
, stickers_(std::move(stickers))
|
||||
, software_(std::move(software)) {
|
||||
}
|
||||
@ -7090,7 +7093,7 @@ void Td::on_request(uint64 id, td_api::createNewStickerSet &request) {
|
||||
CLEAN_INPUT_STRING(request.name_);
|
||||
CLEAN_INPUT_STRING(request.source_);
|
||||
CREATE_REQUEST(CreateNewStickerSetRequest, request.user_id_, std::move(request.title_), std::move(request.name_),
|
||||
std::move(request.stickers_), std::move(request.source_));
|
||||
get_sticker_type(request.sticker_type_), std::move(request.stickers_), std::move(request.source_));
|
||||
}
|
||||
|
||||
void Td::on_request(uint64 id, td_api::addStickerToSet &request) {
|
||||
|
@ -2724,10 +2724,10 @@ class CliClient final : public Actor {
|
||||
} else if (op == "cssn") {
|
||||
const string &name = args;
|
||||
send_request(td_api::make_object<td_api::checkStickerSetName>(name));
|
||||
} else if (op == "usf" || op == "usfa" || op == "usfv" || op == "usfm" || op == "usfe") {
|
||||
} else if (op == "usf" || op == "usfa" || op == "usfv") {
|
||||
send_request(td_api::make_object<td_api::uploadStickerFile>(
|
||||
-1, td_api::make_object<td_api::inputSticker>(as_input_file(args), "😀", as_sticker_format(op),
|
||||
as_sticker_type(op), as_mask_position(op))));
|
||||
as_mask_position(op))));
|
||||
} else if (op == "cnss" || op == "cnssa" || op == "cnssv" || op == "cnssm" || op == "cnsse") {
|
||||
string title;
|
||||
string name;
|
||||
@ -2736,10 +2736,10 @@ class CliClient final : public Actor {
|
||||
auto input_stickers =
|
||||
transform(autosplit(stickers), [op](Slice sticker) -> td_api::object_ptr<td_api::inputSticker> {
|
||||
return td_api::make_object<td_api::inputSticker>(as_input_file(sticker), "😀", as_sticker_format(op),
|
||||
as_sticker_type(op), as_mask_position(op));
|
||||
as_mask_position(op));
|
||||
});
|
||||
send_request(
|
||||
td_api::make_object<td_api::createNewStickerSet>(my_id_, title, name, std::move(input_stickers), "tg_cli"));
|
||||
send_request(td_api::make_object<td_api::createNewStickerSet>(my_id_, title, name, as_sticker_type(op),
|
||||
std::move(input_stickers), "tg_cli"));
|
||||
} else if (op == "sss") {
|
||||
send_request(td_api::make_object<td_api::searchStickerSet>(args));
|
||||
} else if (op == "siss") {
|
||||
|
Loading…
Reference in New Issue
Block a user