From 2dd9da30bef6d30b676bcea4dbaed879a06991c9 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 23 Nov 2023 15:35:54 +0300 Subject: [PATCH] Improve updateSpeechRecognitionTrial. --- td/generate/scheme/td_api.tl | 4 ++-- td/telegram/TranscriptionManager.cpp | 30 ++++++++++++++-------------- td/telegram/TranscriptionManager.h | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index e04597c04..5f517586c 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -6419,8 +6419,8 @@ updateDefaultReactionType reaction_type:ReactionType = Update; //@max_media_duration The maximum allowed duration of media for speech recognition without Telegram Premium subscription //@weekly_count The total number of allowed speech recognitions per week; 0 if none //@left_count Number of left speech recognition attempts this week -//@next_recognition_date Point in time (Unix timestamp) when the user can use speech recognition without Telegram Premium subscription again; 0 if now or never -updateSpeechRecognitionTrial max_media_duration:int32 weekly_count:int32 left_count:int32 next_recognition_date:int32 = Update; +//@next_reset_date Point in time (Unix timestamp) when the weekly number of tries will reset; 0 if unknown +updateSpeechRecognitionTrial max_media_duration:int32 weekly_count:int32 left_count:int32 next_reset_date:int32 = Update; //@description The list of supported dice emojis has changed @emojis The new list of supported dice emojis updateDiceEmojis emojis:vector = Update; diff --git a/td/telegram/TranscriptionManager.cpp b/td/telegram/TranscriptionManager.cpp index a763c7e66..3a7dab145 100644 --- a/td/telegram/TranscriptionManager.cpp +++ b/td/telegram/TranscriptionManager.cpp @@ -18,8 +18,8 @@ namespace td { void TranscriptionManager::TrialParameters::update_left_tries() { - if (cooldown_until_ <= G()->unix_time()) { - cooldown_until_ = 0; + if (next_reset_date_ <= G()->unix_time()) { + next_reset_date_ = 0; left_tries_ = weekly_number_; } else if (left_tries_ > weekly_number_) { left_tries_ = weekly_number_; @@ -31,12 +31,12 @@ void TranscriptionManager::TrialParameters::store(StorerT &storer) const { bool has_weekly_number = weekly_number_ != 0; bool has_duration_max = duration_max_ != 0; bool has_left_tries = left_tries_ != 0; - bool has_cooldown_until = cooldown_until_ != 0; + bool has_next_reset_date = next_reset_date_ != 0; BEGIN_STORE_FLAGS(); STORE_FLAG(has_weekly_number); STORE_FLAG(has_duration_max); STORE_FLAG(has_left_tries); - STORE_FLAG(has_cooldown_until); + STORE_FLAG(has_next_reset_date); END_STORE_FLAGS(); if (has_weekly_number) { td::store(weekly_number_, storer); @@ -47,8 +47,8 @@ void TranscriptionManager::TrialParameters::store(StorerT &storer) const { if (has_left_tries) { td::store(left_tries_, storer); } - if (has_cooldown_until) { - td::store(cooldown_until_, storer); + if (has_next_reset_date) { + td::store(next_reset_date_, storer); } } @@ -57,12 +57,12 @@ void TranscriptionManager::TrialParameters::parse(ParserT &parser) { bool has_weekly_number; bool has_duration_max; bool has_left_tries; - bool has_cooldown_until; + bool has_next_reset_date; BEGIN_PARSE_FLAGS(); PARSE_FLAG(has_weekly_number); PARSE_FLAG(has_duration_max); PARSE_FLAG(has_left_tries); - PARSE_FLAG(has_cooldown_until); + PARSE_FLAG(has_next_reset_date); END_PARSE_FLAGS(); if (has_weekly_number) { td::parse(weekly_number_, parser); @@ -73,14 +73,14 @@ void TranscriptionManager::TrialParameters::parse(ParserT &parser) { if (has_left_tries) { td::parse(left_tries_, parser); } - if (has_cooldown_until) { - td::parse(cooldown_until_, parser); + if (has_next_reset_date) { + td::parse(next_reset_date_, parser); } } bool operator==(const TranscriptionManager::TrialParameters &lhs, const TranscriptionManager::TrialParameters &rhs) { return lhs.weekly_number_ == rhs.weekly_number_ && lhs.duration_max_ == rhs.duration_max_ && - lhs.left_tries_ == rhs.left_tries_ && lhs.cooldown_until_ == rhs.cooldown_until_; + lhs.left_tries_ == rhs.left_tries_ && lhs.next_reset_date_ == rhs.next_reset_date_; } TranscriptionManager::TranscriptionManager(Td *td, ActorShared<> parent) : td_(td), parent_(std::move(parent)) { @@ -149,7 +149,7 @@ void TranscriptionManager::on_update_trial_parameters(int32 weekly_number, int32 TrialParameters new_trial_parameters; new_trial_parameters.weekly_number_ = max(0, weekly_number); new_trial_parameters.duration_max_ = max(0, duration_max); - new_trial_parameters.cooldown_until_ = max(0, cooldown_until); + new_trial_parameters.next_reset_date_ = cooldown_until > 0 ? cooldown_until : trial_parameters_.next_reset_date_; new_trial_parameters.left_tries_ = trial_parameters_.left_tries_; set_trial_parameters(new_trial_parameters); } @@ -179,7 +179,7 @@ TranscriptionManager::get_update_speech_recognition_trial_object() const { td_api::object_ptr TranscriptionManager::TrialParameters::get_update_speech_recognition_trial_object() const { return td_api::make_object(duration_max_, weekly_number_, left_tries_, - cooldown_until_); + next_reset_date_); } void TranscriptionManager::register_voice(FileId file_id, MessageContentType content_type, @@ -258,7 +258,7 @@ void TranscriptionManager::on_transcribed_audio( on_transcribed_audio_update(file_info, true, r_audio.move_as_error()); if (retry_after > 0) { TrialParameters new_trial_parameters = trial_parameters_; - new_trial_parameters.cooldown_until_ = G()->unix_time() + retry_after; + new_trial_parameters.next_reset_date_ = G()->unix_time() + retry_after; new_trial_parameters.left_tries_ = 0; set_trial_parameters(new_trial_parameters); } @@ -276,7 +276,7 @@ void TranscriptionManager::on_transcribed_audio( if ((audio->flags_ & telegram_api::messages_transcribedAudio::TRIAL_REMAINS_NUM_MASK) != 0) { TrialParameters new_trial_parameters = trial_parameters_; - new_trial_parameters.cooldown_until_ = audio->trial_remains_num_ > 0 ? 0 : audio->trial_remains_until_date_; + new_trial_parameters.next_reset_date_ = max(0, audio->trial_remains_until_date_); new_trial_parameters.left_tries_ = audio->trial_remains_num_; set_trial_parameters(new_trial_parameters); } diff --git a/td/telegram/TranscriptionManager.h b/td/telegram/TranscriptionManager.h index 137b0478b..076162793 100644 --- a/td/telegram/TranscriptionManager.h +++ b/td/telegram/TranscriptionManager.h @@ -63,7 +63,7 @@ class TranscriptionManager final : public Actor { int32 weekly_number_ = 0; int32 duration_max_ = 0; int32 left_tries_ = 0; - int32 cooldown_until_ = 0; + int32 next_reset_date_ = 0; void update_left_tries();