Skip to content

Commit 53acb2b

Browse files
committed
Delete inline query message content one hour after result cache.
1 parent d961806 commit 53acb2b

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

td/telegram/InlineQueriesManager.cpp

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,10 @@ class SendWebViewResultMessageQuery final : public Td::ResultHandler {
364364
InlineQueriesManager::InlineQueriesManager(Td *td, ActorShared<> parent) : td_(td), parent_(std::move(parent)) {
365365
drop_inline_query_result_timeout_.set_callback(on_drop_inline_query_result_timeout_callback);
366366
drop_inline_query_result_timeout_.set_callback_data(static_cast<void *>(this));
367+
368+
drop_inline_query_message_timeout_.set_callback(on_drop_inline_query_message_timeout_callback);
369+
drop_inline_query_message_timeout_.set_callback_data(static_cast<void *>(this));
370+
367371
next_inline_query_time_ = Time::now();
368372
}
369373

@@ -393,13 +397,34 @@ void InlineQueriesManager::on_drop_inline_query_result_timeout(int64 query_hash)
393397
if (it->second.pending_request_count == 0) {
394398
if (it->second.results != nullptr) {
395399
auto query_id = it->second.results->inline_query_id_;
396-
inline_message_contents_.erase(query_id);
397-
query_id_to_bot_user_id_.erase(query_id);
400+
if (query_id) {
401+
drop_inline_query_message_timeout_.set_timeout_in(query_id, 3600);
402+
}
398403
}
399404
inline_query_results_.erase(it);
400405
}
401406
}
402407

408+
void InlineQueriesManager::on_drop_inline_query_message_timeout_callback(void *inline_queries_manager_ptr,
409+
int64 query_id) {
410+
if (G()->close_flag()) {
411+
return;
412+
}
413+
414+
auto inline_queries_manager = static_cast<InlineQueriesManager *>(inline_queries_manager_ptr);
415+
send_closure_later(inline_queries_manager->actor_id(inline_queries_manager),
416+
&InlineQueriesManager::on_drop_inline_query_message_timeout, query_id);
417+
}
418+
419+
void InlineQueriesManager::on_drop_inline_query_message_timeout(int64 query_id) {
420+
if (G()->close_flag()) {
421+
return;
422+
}
423+
424+
inline_message_contents_.erase(query_id);
425+
query_id_to_bot_user_id_.erase(query_id);
426+
}
427+
403428
void InlineQueriesManager::after_get_difference() {
404429
if (td_->auth_manager_->is_bot()) {
405430
return;

td/telegram/InlineQueriesManager.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ class InlineQueriesManager final : public Actor {
140140

141141
void on_drop_inline_query_result_timeout(int64 query_hash);
142142

143+
static void on_drop_inline_query_message_timeout_callback(void *inline_queries_manager_ptr, int64 query_id);
144+
145+
void on_drop_inline_query_message_timeout(int64 query_id);
146+
143147
void loop() final;
144148

145149
void tear_down() final;
@@ -173,6 +177,7 @@ class InlineQueriesManager final : public Actor {
173177
};
174178

175179
MultiTimeout drop_inline_query_result_timeout_{"DropInlineQueryResultTimeout"};
180+
MultiTimeout drop_inline_query_message_timeout_{"DropInlineQueryMessageTimeout"};
176181
FlatHashMap<uint64, InlineQueryResult> inline_query_results_; // query_hash -> result
177182

178183
FlatHashMap<int64, FlatHashMap<string, InlineMessageContent>>

0 commit comments

Comments
 (0)