diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index a6c2b44c..db978f73 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -2533,6 +2533,9 @@ updateNewCustomEvent event:string = Update; //@description A new incoming query; for bots only @id The query identifier @data JSON-serialized query data @timeout Query timeout updateNewCustomQuery id:int64 data:string timeout:int32 = Update; +//@description Information about a poll was updated; for bots only @poll New data about the poll +updatePoll poll:poll = Update; + //@description Contains a list of updated @updates List of updates updates updates:vector = Updates; diff --git a/td/generate/scheme/td_api.tlo b/td/generate/scheme/td_api.tlo index 91119422..105450a2 100644 Binary files a/td/generate/scheme/td_api.tlo and b/td/generate/scheme/td_api.tlo differ diff --git a/td/telegram/PollManager.cpp b/td/telegram/PollManager.cpp index 4a4c17ea..4014c071 100644 --- a/td/telegram/PollManager.cpp +++ b/td/telegram/PollManager.cpp @@ -411,6 +411,10 @@ vector PollManager::get_vote_percentage(const vector &voter_counts td_api::object_ptr PollManager::get_poll_object(PollId poll_id) const { auto poll = get_poll(poll_id); CHECK(poll != nullptr); + return get_poll_object(poll_id, poll); +} + +td_api::object_ptr PollManager::get_poll_object(PollId poll_id, const Poll *poll) const { vector> poll_options; auto it = pending_answers_.find(poll_id); int32 voter_count_diff = 0; @@ -834,6 +838,8 @@ vector PollManager::get_poll_options( PollId PollManager::on_get_poll(PollId poll_id, tl_object_ptr &&poll_server, tl_object_ptr &&poll_results) { + bool is_bot = td_->auth_manager_->is_bot(); + bool need_update_poll = poll_id.is_valid() && is_bot; if (!poll_id.is_valid() && poll_server != nullptr) { poll_id = PollId(poll_server->id_); } @@ -958,6 +964,11 @@ PollId PollManager::on_get_poll(PollId poll_id, tl_object_ptrtd(), &Td::send_update, + td_api::make_object(get_poll_object(poll_id, poll))); + } } return poll_id; } diff --git a/td/telegram/PollManager.h b/td/telegram/PollManager.h index 3d6f6053..64a3f02b 100644 --- a/td/telegram/PollManager.h +++ b/td/telegram/PollManager.h @@ -137,6 +137,8 @@ class PollManager : public Actor { Poll *get_poll_force(PollId poll_id); + td_api::object_ptr get_poll_object(PollId poll_id, const Poll *poll) const; + void on_get_poll_results(PollId poll_id, uint64 generation, Result> result); void do_set_poll_answer(PollId poll_id, FullMessageId full_message_id, vector &&options, uint64 logevent_id,