diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index cb7a623..ccfe947 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -268,6 +268,7 @@ bool Client::init_methods() { methods_.emplace("editmessagereplymarkup", &Client::process_edit_message_reply_markup_query); methods_.emplace("deletemessage", &Client::process_delete_message_query); methods_.emplace("deletemessages", &Client::process_delete_messages_query); + methods_.emplace("deletemessagereaction", &Client::process_delete_message_reaction_query); methods_.emplace("poststory", &Client::process_post_story_query); methods_.emplace("repoststory", &Client::process_repost_story_query); methods_.emplace("editstory", &Client::process_edit_story_query); @@ -13521,6 +13522,38 @@ td::Status Client::process_delete_messages_query(PromisedQueryPtr &query) { return td::Status::OK(); } +td::Status Client::process_delete_message_reaction_query(PromisedQueryPtr &query) { + auto chat_id = query->arg("chat_id"); + auto message_id = get_message_id(query.get()); + int64 user_id = -1; + td::string actor_chat_id; + if (!query->arg("user_id").empty()) { + TRY_RESULT_ASSIGN(user_id, get_user_id(query.get())); + } else { + actor_chat_id = query->arg("actor_chat_id").str(); + } + check_message(chat_id, message_id, false, AccessRights::Write, "message to delete reactions", std::move(query), + [this, user_id, actor_chat_id](int64 chat_id, int64 message_id, PromisedQueryPtr query) { + if (user_id >= 0) { + check_user_no_fail( + user_id, std::move(query), [this, chat_id, message_id, user_id](PromisedQueryPtr query) { + send_request(make_object( + chat_id, message_id, make_object(user_id)), + td::make_unique(std::move(query))); + }); + } else { + check_chat_no_fail( + actor_chat_id, std::move(query), + [this, chat_id, message_id](int64 actor_chat_id, PromisedQueryPtr query) { + send_request(make_object( + chat_id, message_id, make_object(actor_chat_id)), + td::make_unique(std::move(query))); + }); + } + }); + return td::Status::OK(); +} + td::Status Client::process_post_story_query(PromisedQueryPtr &query) { auto business_connection_id = query->arg("business_connection_id").str(); TRY_RESULT(content, get_input_story_content(query.get())); diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index bfe1998..8d1f686 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -802,6 +802,7 @@ class Client final : public WebhookActor::Callback { td::Status process_edit_message_reply_markup_query(PromisedQueryPtr &query); td::Status process_delete_message_query(PromisedQueryPtr &query); td::Status process_delete_messages_query(PromisedQueryPtr &query); + td::Status process_delete_message_reaction_query(PromisedQueryPtr &query); td::Status process_post_story_query(PromisedQueryPtr &query); td::Status process_repost_story_query(PromisedQueryPtr &query); td::Status process_edit_story_query(PromisedQueryPtr &query);