Move inline_message_id methods to InlineMessageManager.
This commit is contained in:
parent
03ca49f3a1
commit
bf52d1cc53
@ -11,7 +11,6 @@
|
||||
#include "td/telegram/files/FileManager.h"
|
||||
#include "td/telegram/GameManager.h"
|
||||
#include "td/telegram/Global.h"
|
||||
#include "td/telegram/InlineQueriesManager.h"
|
||||
#include "td/telegram/InputMessageText.h"
|
||||
#include "td/telegram/Location.h"
|
||||
#include "td/telegram/MessageContent.h"
|
||||
@ -22,9 +21,11 @@
|
||||
#include "td/telegram/Td.h"
|
||||
#include "td/telegram/UserManager.h"
|
||||
|
||||
#include "td/utils/base64.h"
|
||||
#include "td/utils/buffer.h"
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/Status.h"
|
||||
#include "td/utils/tl_parsers.h"
|
||||
|
||||
namespace td {
|
||||
|
||||
@ -66,7 +67,7 @@ class EditInlineMessageQuery final : public Td::ResultHandler {
|
||||
flags |= telegram_api::messages_editInlineBotMessage::INVERT_MEDIA_MASK;
|
||||
}
|
||||
|
||||
auto dc_id = DcId::internal(InlineQueriesManager::get_inline_message_dc_id(input_bot_inline_message_id));
|
||||
auto dc_id = DcId::internal(InlineMessageManager::get_inline_message_dc_id(input_bot_inline_message_id));
|
||||
send_query(G()->net_query_creator().create(
|
||||
telegram_api::messages_editInlineBotMessage(
|
||||
flags, false /*ignored*/, false /*ignored*/, std::move(input_bot_inline_message_id), text,
|
||||
@ -111,7 +112,7 @@ class SetInlineGameScoreQuery final : public Td::ResultHandler {
|
||||
flags |= telegram_api::messages_setInlineGameScore::FORCE_MASK;
|
||||
}
|
||||
|
||||
auto dc_id = DcId::internal(InlineQueriesManager::get_inline_message_dc_id(input_bot_inline_message_id));
|
||||
auto dc_id = DcId::internal(InlineMessageManager::get_inline_message_dc_id(input_bot_inline_message_id));
|
||||
send_query(G()->net_query_creator().create(
|
||||
telegram_api::messages_setInlineGameScore(flags, false /*ignored*/, false /*ignored*/,
|
||||
std::move(input_bot_inline_message_id), std::move(input_user), score),
|
||||
@ -148,7 +149,7 @@ class GetInlineGameHighScoresQuery final : public Td::ResultHandler {
|
||||
CHECK(input_bot_inline_message_id != nullptr);
|
||||
CHECK(input_user != nullptr);
|
||||
|
||||
auto dc_id = DcId::internal(InlineQueriesManager::get_inline_message_dc_id(input_bot_inline_message_id));
|
||||
auto dc_id = DcId::internal(InlineMessageManager::get_inline_message_dc_id(input_bot_inline_message_id));
|
||||
send_query(G()->net_query_creator().create(
|
||||
telegram_api::messages_getInlineGameHighScores(std::move(input_bot_inline_message_id), std::move(input_user)),
|
||||
{}, dc_id));
|
||||
@ -194,7 +195,7 @@ void InlineMessageManager::edit_inline_message_text(
|
||||
TRY_RESULT_PROMISE(promise, new_reply_markup,
|
||||
get_reply_markup(std::move(reply_markup), td_->auth_manager_->is_bot(), true, false, true));
|
||||
|
||||
auto input_bot_inline_message_id = td_->inline_queries_manager_->get_input_bot_inline_message_id(inline_message_id);
|
||||
auto input_bot_inline_message_id = get_input_bot_inline_message_id(inline_message_id);
|
||||
if (input_bot_inline_message_id == nullptr) {
|
||||
return promise.set_error(Status::Error(400, "Invalid inline message identifier specified"));
|
||||
}
|
||||
@ -217,7 +218,7 @@ void InlineMessageManager::edit_inline_message_live_location(const string &inlin
|
||||
TRY_RESULT_PROMISE(promise, new_reply_markup,
|
||||
get_reply_markup(std::move(reply_markup), td_->auth_manager_->is_bot(), true, false, true));
|
||||
|
||||
auto input_bot_inline_message_id = td_->inline_queries_manager_->get_input_bot_inline_message_id(inline_message_id);
|
||||
auto input_bot_inline_message_id = get_input_bot_inline_message_id(inline_message_id);
|
||||
if (input_bot_inline_message_id == nullptr) {
|
||||
return promise.set_error(Status::Error(400, "Invalid inline message identifier specified"));
|
||||
}
|
||||
@ -273,7 +274,7 @@ void InlineMessageManager::edit_inline_message_media(
|
||||
TRY_RESULT_PROMISE(promise, new_reply_markup,
|
||||
get_reply_markup(std::move(reply_markup), td_->auth_manager_->is_bot(), true, false, true));
|
||||
|
||||
auto input_bot_inline_message_id = td_->inline_queries_manager_->get_input_bot_inline_message_id(inline_message_id);
|
||||
auto input_bot_inline_message_id = get_input_bot_inline_message_id(inline_message_id);
|
||||
if (input_bot_inline_message_id == nullptr) {
|
||||
return promise.set_error(Status::Error(400, "Invalid inline message identifier specified"));
|
||||
}
|
||||
@ -303,7 +304,7 @@ void InlineMessageManager::edit_inline_message_caption(const string &inline_mess
|
||||
TRY_RESULT_PROMISE(promise, new_reply_markup,
|
||||
get_reply_markup(std::move(reply_markup), td_->auth_manager_->is_bot(), true, false, true));
|
||||
|
||||
auto input_bot_inline_message_id = td_->inline_queries_manager_->get_input_bot_inline_message_id(inline_message_id);
|
||||
auto input_bot_inline_message_id = get_input_bot_inline_message_id(inline_message_id);
|
||||
if (input_bot_inline_message_id == nullptr) {
|
||||
return promise.set_error(Status::Error(400, "Invalid inline message identifier specified"));
|
||||
}
|
||||
@ -322,7 +323,7 @@ void InlineMessageManager::edit_inline_message_reply_markup(const string &inline
|
||||
TRY_RESULT_PROMISE(promise, new_reply_markup,
|
||||
get_reply_markup(std::move(reply_markup), td_->auth_manager_->is_bot(), true, false, true));
|
||||
|
||||
auto input_bot_inline_message_id = td_->inline_queries_manager_->get_input_bot_inline_message_id(inline_message_id);
|
||||
auto input_bot_inline_message_id = get_input_bot_inline_message_id(inline_message_id);
|
||||
if (input_bot_inline_message_id == nullptr) {
|
||||
return promise.set_error(Status::Error(400, "Invalid inline message identifier specified"));
|
||||
}
|
||||
@ -337,7 +338,7 @@ void InlineMessageManager::set_inline_game_score(const string &inline_message_id
|
||||
int32 score, bool force, Promise<Unit> &&promise) {
|
||||
CHECK(td_->auth_manager_->is_bot());
|
||||
|
||||
auto input_bot_inline_message_id = td_->inline_queries_manager_->get_input_bot_inline_message_id(inline_message_id);
|
||||
auto input_bot_inline_message_id = get_input_bot_inline_message_id(inline_message_id);
|
||||
if (input_bot_inline_message_id == nullptr) {
|
||||
return promise.set_error(Status::Error(400, "Invalid inline message identifier specified"));
|
||||
}
|
||||
@ -352,7 +353,7 @@ void InlineMessageManager::get_inline_game_high_scores(const string &inline_mess
|
||||
Promise<td_api::object_ptr<td_api::gameHighScores>> &&promise) {
|
||||
CHECK(td_->auth_manager_->is_bot());
|
||||
|
||||
auto input_bot_inline_message_id = td_->inline_queries_manager_->get_input_bot_inline_message_id(inline_message_id);
|
||||
auto input_bot_inline_message_id = get_input_bot_inline_message_id(inline_message_id);
|
||||
if (input_bot_inline_message_id == nullptr) {
|
||||
return promise.set_error(Status::Error(400, "Invalid inline message identifier specified"));
|
||||
}
|
||||
@ -363,4 +364,39 @@ void InlineMessageManager::get_inline_game_high_scores(const string &inline_mess
|
||||
->send(std::move(input_bot_inline_message_id), std::move(input_user));
|
||||
}
|
||||
|
||||
int32 InlineMessageManager::get_inline_message_dc_id(
|
||||
const telegram_api::object_ptr<telegram_api::InputBotInlineMessageID> &inline_message_id) {
|
||||
CHECK(inline_message_id != nullptr);
|
||||
switch (inline_message_id->get_id()) {
|
||||
case telegram_api::inputBotInlineMessageID::ID:
|
||||
return static_cast<const telegram_api::inputBotInlineMessageID *>(inline_message_id.get())->dc_id_;
|
||||
case telegram_api::inputBotInlineMessageID64::ID:
|
||||
return static_cast<const telegram_api::inputBotInlineMessageID64 *>(inline_message_id.get())->dc_id_;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
telegram_api::object_ptr<telegram_api::InputBotInlineMessageID> InlineMessageManager::get_input_bot_inline_message_id(
|
||||
const string &inline_message_id) {
|
||||
auto r_binary = base64url_decode(inline_message_id);
|
||||
if (r_binary.is_error()) {
|
||||
return nullptr;
|
||||
}
|
||||
BufferSlice buffer_slice(r_binary.ok());
|
||||
TlBufferParser parser(&buffer_slice);
|
||||
auto result = buffer_slice.size() == 20 ? telegram_api::inputBotInlineMessageID::fetch(parser)
|
||||
: telegram_api::inputBotInlineMessageID64::fetch(parser);
|
||||
parser.fetch_end();
|
||||
if (parser.get_error()) {
|
||||
return nullptr;
|
||||
}
|
||||
if (!DcId::is_valid(get_inline_message_dc_id(result))) {
|
||||
return nullptr;
|
||||
}
|
||||
LOG(INFO) << "Have inline message identifier: " << to_string(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace td
|
||||
|
@ -7,6 +7,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "td/telegram/td_api.h"
|
||||
#include "td/telegram/telegram_api.h"
|
||||
#include "td/telegram/UserId.h"
|
||||
|
||||
#include "td/actor/actor.h"
|
||||
@ -51,9 +52,15 @@ class InlineMessageManager final : public Actor {
|
||||
void get_inline_game_high_scores(const string &inline_message_id, UserId user_id,
|
||||
Promise<td_api::object_ptr<td_api::gameHighScores>> &&promise);
|
||||
|
||||
static int32 get_inline_message_dc_id(
|
||||
const telegram_api::object_ptr<telegram_api::InputBotInlineMessageID> &inline_message_id);
|
||||
|
||||
private:
|
||||
void tear_down() final;
|
||||
|
||||
static telegram_api::object_ptr<telegram_api::InputBotInlineMessageID> get_input_bot_inline_message_id(
|
||||
const string &inline_message_id);
|
||||
|
||||
Td *td_;
|
||||
ActorShared<> parent_;
|
||||
};
|
||||
|
@ -56,7 +56,6 @@
|
||||
#include "td/utils/SliceBuilder.h"
|
||||
#include "td/utils/Time.h"
|
||||
#include "td/utils/tl_helpers.h"
|
||||
#include "td/utils/tl_parsers.h"
|
||||
|
||||
namespace td {
|
||||
|
||||
@ -321,41 +320,6 @@ void InlineQueriesManager::after_get_difference() {
|
||||
}
|
||||
}
|
||||
|
||||
int32 InlineQueriesManager::get_inline_message_dc_id(
|
||||
const tl_object_ptr<telegram_api::InputBotInlineMessageID> &inline_message_id) {
|
||||
CHECK(inline_message_id != nullptr);
|
||||
switch (inline_message_id->get_id()) {
|
||||
case telegram_api::inputBotInlineMessageID::ID:
|
||||
return static_cast<const telegram_api::inputBotInlineMessageID *>(inline_message_id.get())->dc_id_;
|
||||
case telegram_api::inputBotInlineMessageID64::ID:
|
||||
return static_cast<const telegram_api::inputBotInlineMessageID64 *>(inline_message_id.get())->dc_id_;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
tl_object_ptr<telegram_api::InputBotInlineMessageID> InlineQueriesManager::get_input_bot_inline_message_id(
|
||||
const string &inline_message_id) {
|
||||
auto r_binary = base64url_decode(inline_message_id);
|
||||
if (r_binary.is_error()) {
|
||||
return nullptr;
|
||||
}
|
||||
BufferSlice buffer_slice(r_binary.ok());
|
||||
TlBufferParser parser(&buffer_slice);
|
||||
auto result = buffer_slice.size() == 20 ? telegram_api::inputBotInlineMessageID::fetch(parser)
|
||||
: telegram_api::inputBotInlineMessageID64::fetch(parser);
|
||||
parser.fetch_end();
|
||||
if (parser.get_error()) {
|
||||
return nullptr;
|
||||
}
|
||||
if (!DcId::is_valid(get_inline_message_dc_id(result))) {
|
||||
return nullptr;
|
||||
}
|
||||
LOG(INFO) << "Have inline message identifier: " << to_string(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
string InlineQueriesManager::get_inline_message_id(
|
||||
tl_object_ptr<telegram_api::InputBotInlineMessageID> &&input_bot_inline_message_id) {
|
||||
if (input_bot_inline_message_id == nullptr) {
|
||||
|
@ -78,11 +78,6 @@ class InlineQueriesManager final : public Actor {
|
||||
void on_chosen_result(UserId user_id, Location user_location, const string &query, const string &result_id,
|
||||
tl_object_ptr<telegram_api::InputBotInlineMessageID> &&input_bot_inline_message_id);
|
||||
|
||||
static int32 get_inline_message_dc_id(const tl_object_ptr<telegram_api::InputBotInlineMessageID> &inline_message_id);
|
||||
|
||||
static tl_object_ptr<telegram_api::InputBotInlineMessageID> get_input_bot_inline_message_id(
|
||||
const string &inline_message_id);
|
||||
|
||||
static string get_inline_message_id(
|
||||
tl_object_ptr<telegram_api::InputBotInlineMessageID> &&input_bot_inline_message_id);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user