aboutsummaryrefslogtreecommitdiffhomepage
path: root/td/telegram/TranscriptionManager.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2023-11-23 14:49:05 +0300
committerlevlam <levlam@telegram.org>2023-11-23 14:49:05 +0300
commit50a360c1479844ee4147d2d4d31ce39923fbf9b4 (patch)
treef43324de4fc371cba1bcd4d81d2252507c4f1480 /td/telegram/TranscriptionManager.cpp
parentfa6b61d764c35194da9def23ee2924f711289dba (diff)
Update trial parameters after speech recognition.
Diffstat (limited to 'td/telegram/TranscriptionManager.cpp')
-rw-r--r--td/telegram/TranscriptionManager.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/td/telegram/TranscriptionManager.cpp b/td/telegram/TranscriptionManager.cpp
index 50b6059b9..a763c7e66 100644
--- a/td/telegram/TranscriptionManager.cpp
+++ b/td/telegram/TranscriptionManager.cpp
@@ -151,6 +151,10 @@ void TranscriptionManager::on_update_trial_parameters(int32 weekly_number, int32
new_trial_parameters.duration_max_ = max(0, duration_max);
new_trial_parameters.cooldown_until_ = max(0, cooldown_until);
new_trial_parameters.left_tries_ = trial_parameters_.left_tries_;
+ set_trial_parameters(new_trial_parameters);
+}
+
+void TranscriptionManager::set_trial_parameters(TrialParameters new_trial_parameters) {
new_trial_parameters.update_left_tries();
if (new_trial_parameters == trial_parameters_) {
return;
@@ -246,11 +250,19 @@ void TranscriptionManager::recognize_speech(MessageFullId message_full_id, Promi
void TranscriptionManager::on_transcribed_audio(
FileInfo file_info, Result<telegram_api::object_ptr<telegram_api::messages_transcribedAudio>> r_audio) {
- if (G()->close_flag()) {
+ if (G()->close_flag() || !td_->auth_manager_->is_authorized()) {
return;
}
if (r_audio.is_error()) {
- return on_transcribed_audio_update(file_info, true, r_audio.move_as_error());
+ auto retry_after = Global::get_retry_after(r_audio.error());
+ 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.left_tries_ = 0;
+ set_trial_parameters(new_trial_parameters);
+ }
+ return;
}
auto audio = r_audio.move_as_ok();
if (audio->transcription_id_ == 0) {
@@ -261,12 +273,19 @@ void TranscriptionManager::on_transcribed_audio(
update->transcription_id_ = audio->transcription_id_;
update->pending_ = audio->pending_;
on_transcribed_audio_update(file_info, true, std::move(update));
+
+ 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.left_tries_ = audio->trial_remains_num_;
+ set_trial_parameters(new_trial_parameters);
+ }
}
void TranscriptionManager::on_transcribed_audio_update(
FileInfo file_info, bool is_initial,
Result<telegram_api::object_ptr<telegram_api::updateTranscribedAudio>> r_update) {
- if (G()->close_flag()) {
+ if (G()->close_flag() || !td_->auth_manager_->is_authorized()) {
return;
}