Add sendStory.active_period.
This commit is contained in:
parent
bd4004e0be
commit
894e246d8f
@ -7202,8 +7202,9 @@ getStory user_id:int53 story_id:int32 = Story;
|
||||
//@content Content of the story
|
||||
//@caption Story caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters
|
||||
//@privacy_rules The privacy rules for the story
|
||||
//@active_period Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, 2 * 86400, 3 * 86400, or 7 * 86400 for Telegram Premium users, and 86400 otherwise
|
||||
//@is_pinned Pass true to keep the story accessible after expiration
|
||||
sendStory content:InputStoryContent caption:formattedText privacy_rules:userPrivacySettingRules is_pinned:Bool = Story;
|
||||
sendStory content:InputStoryContent caption:formattedText privacy_rules:userPrivacySettingRules active_period:int32 is_pinned:Bool = Story;
|
||||
|
||||
//@description Changes content and caption of a previously sent story
|
||||
//@story_id Identifier of the story to edit
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "td/telegram/logevent/LogEventHelper.h"
|
||||
#include "td/telegram/MessageEntity.h"
|
||||
#include "td/telegram/MessagesManager.h"
|
||||
#include "td/telegram/OptionManager.h"
|
||||
#include "td/telegram/StoryContent.h"
|
||||
#include "td/telegram/StoryContentType.h"
|
||||
#include "td/telegram/Td.h"
|
||||
@ -278,6 +279,7 @@ class StoryManager::SendStoryQuery final : public Td::ResultHandler {
|
||||
const FormattedText &caption = story->caption_;
|
||||
auto entities = get_input_message_entities(td_->contacts_manager_.get(), &caption, "SendStoryQuery");
|
||||
auto privacy_rules = story->privacy_rules_.get_input_privacy_rules(td_);
|
||||
auto period = story->expire_date_ - story->date_;
|
||||
int32 flags = 0;
|
||||
if (!caption.text.empty()) {
|
||||
flags |= telegram_api::stories_sendStory::CAPTION_MASK;
|
||||
@ -288,11 +290,14 @@ class StoryManager::SendStoryQuery final : public Td::ResultHandler {
|
||||
if (pending_story_->story_->is_pinned_) {
|
||||
flags |= telegram_api::stories_sendStory::PINNED_MASK;
|
||||
}
|
||||
if (period != 86400) {
|
||||
flags |= telegram_api::stories_sendStory::PERIOD_MASK;
|
||||
}
|
||||
|
||||
send_query(G()->net_query_creator().create(
|
||||
telegram_api::stories_sendStory(flags, false /*ignored*/, false /*ignored*/, std::move(input_media),
|
||||
caption.text, std::move(entities), std::move(privacy_rules),
|
||||
pending_story_->random_id_, 86400),
|
||||
pending_story_->random_id_, period),
|
||||
{{pending_story_->dialog_id_}}));
|
||||
}
|
||||
|
||||
@ -798,7 +803,7 @@ void StoryManager::on_story_changed(StoryFullId story_full_id, const Story *stor
|
||||
send_closure(G()->td(), &Td::send_update,
|
||||
td_api::make_object<td_api::updateStory>(get_story_object(story_full_id, story)));
|
||||
}
|
||||
|
||||
|
||||
send_closure_later(G()->messages_manager(),
|
||||
&MessagesManager::update_story_max_reply_media_timestamp_in_replied_messages, story_full_id);
|
||||
}
|
||||
@ -932,8 +937,8 @@ void StoryManager::do_get_story(StoryFullId story_full_id, Result<Unit> &&result
|
||||
|
||||
void StoryManager::send_story(td_api::object_ptr<td_api::InputStoryContent> &&input_story_content,
|
||||
td_api::object_ptr<td_api::formattedText> &&input_caption,
|
||||
td_api::object_ptr<td_api::userPrivacySettingRules> &&rules, bool is_pinned,
|
||||
Promise<td_api::object_ptr<td_api::story>> &&promise) {
|
||||
td_api::object_ptr<td_api::userPrivacySettingRules> &&rules, int32 active_period,
|
||||
bool is_pinned, Promise<td_api::object_ptr<td_api::story>> &&promise) {
|
||||
bool is_bot = td_->auth_manager_->is_bot();
|
||||
DialogId dialog_id(td_->contacts_manager_->get_my_id());
|
||||
TRY_RESULT_PROMISE(promise, content, get_input_story_content(td_, std::move(input_story_content), dialog_id));
|
||||
@ -941,10 +946,16 @@ void StoryManager::send_story(td_api::object_ptr<td_api::InputStoryContent> &&in
|
||||
get_formatted_text(td_, DialogId(), std::move(input_caption), is_bot, true, false, false));
|
||||
TRY_RESULT_PROMISE(promise, privacy_rules,
|
||||
UserPrivacySettingRules::get_user_privacy_setting_rules(td_, std::move(rules)));
|
||||
bool is_premium = td_->option_manager_->get_option_boolean("is_premium");
|
||||
if (active_period != 86400 &&
|
||||
!(is_premium &&
|
||||
td::contains(vector<int32>{6 * 3600, 12 * 3600, 2 * 86400, 3 * 86400, 7 * 86400}, active_period))) {
|
||||
return promise.set_error(Status::Error(400, "Invalid story active period specified"));
|
||||
}
|
||||
|
||||
auto story = make_unique<Story>();
|
||||
story->date_ = G()->unix_time();
|
||||
story->expire_date_ = std::numeric_limits<int32>::max();
|
||||
story->expire_date_ = story->date_ + active_period;
|
||||
story->is_pinned_ = is_pinned;
|
||||
story->privacy_rules_ = std::move(privacy_rules);
|
||||
story->content_ = std::move(content);
|
||||
|
@ -79,7 +79,7 @@ class StoryManager final : public Actor {
|
||||
|
||||
void send_story(td_api::object_ptr<td_api::InputStoryContent> &&input_story_content,
|
||||
td_api::object_ptr<td_api::formattedText> &&input_caption,
|
||||
td_api::object_ptr<td_api::userPrivacySettingRules> &&rules, bool is_pinned,
|
||||
td_api::object_ptr<td_api::userPrivacySettingRules> &&rules, int32 active_period, bool is_pinned,
|
||||
Promise<td_api::object_ptr<td_api::story>> &&promise);
|
||||
|
||||
void on_send_story_file_part_missing(unique_ptr<PendingStory> &&pending_story, int bad_part);
|
||||
|
@ -5630,7 +5630,8 @@ void Td::on_request(uint64 id, td_api::sendStory &request) {
|
||||
CHECK_IS_USER();
|
||||
CREATE_REQUEST_PROMISE();
|
||||
story_manager_->send_story(std::move(request.content_), std::move(request.caption_),
|
||||
std::move(request.privacy_rules_), request.is_pinned_, std::move(promise));
|
||||
std::move(request.privacy_rules_), request.active_period_, request.is_pinned_,
|
||||
std::move(promise));
|
||||
}
|
||||
|
||||
void Td::on_request(uint64 id, td_api::editStory &request) {
|
||||
|
@ -3977,23 +3977,25 @@ class CliClient final : public Actor {
|
||||
string photo;
|
||||
string caption;
|
||||
PrivacyRules rules;
|
||||
int32 active_period;
|
||||
string sticker_file_ids;
|
||||
get_args(args, photo, caption, rules, sticker_file_ids);
|
||||
send_request(
|
||||
td_api::make_object<td_api::sendStory>(td_api::make_object<td_api::inputStoryContentPhoto>(
|
||||
as_input_file(photo), to_integers<int32>(sticker_file_ids)),
|
||||
as_caption(caption), rules, op == "sspp"));
|
||||
get_args(args, photo, caption, rules, active_period, sticker_file_ids);
|
||||
send_request(td_api::make_object<td_api::sendStory>(
|
||||
td_api::make_object<td_api::inputStoryContentPhoto>(as_input_file(photo),
|
||||
to_integers<int32>(sticker_file_ids)),
|
||||
as_caption(caption), rules, active_period ? active_period : 86400, op == "sspp"));
|
||||
} else if (op == "ssv" || op == "ssvp") {
|
||||
string video;
|
||||
string caption;
|
||||
PrivacyRules rules;
|
||||
int32 active_period;
|
||||
double duration;
|
||||
string sticker_file_ids;
|
||||
get_args(args, video, caption, rules, duration, sticker_file_ids);
|
||||
get_args(args, video, caption, rules, active_period, duration, sticker_file_ids);
|
||||
send_request(td_api::make_object<td_api::sendStory>(
|
||||
td_api::make_object<td_api::inputStoryContentVideo>(as_input_file(video),
|
||||
to_integers<int32>(sticker_file_ids), duration),
|
||||
as_caption(caption), rules, op == "ssvp"));
|
||||
as_caption(caption), rules, active_period ? active_period : 86400, op == "ssvp"));
|
||||
} else if (op == "esc") {
|
||||
StoryId story_id;
|
||||
string caption;
|
||||
|
Loading…
Reference in New Issue
Block a user