Skip to content

Commit a879acc

Browse files
committed
Add check_business_connection_chat_id.
1 parent bd31c2a commit a879acc

File tree

2 files changed

+60
-84
lines changed

2 files changed

+60
-84
lines changed

telegram-bot-api/Client.cpp

Lines changed: 56 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -6074,6 +6074,21 @@ void Client::check_business_connection(const td::string &business_connection_id,
60746074
td::make_unique<TdOnCheckBusinessConnectionCallback<OnSuccess>>(this, std::move(query), std::move(on_success)));
60756075
}
60766076

6077+
template <class OnSuccess>
6078+
void Client::check_business_connection_chat_id(const td::string &business_connection_id, const td::string &chat_id_str,
6079+
PromisedQueryPtr query, OnSuccess on_success) {
6080+
auto r_chat_id = get_business_connection_chat_id(chat_id_str);
6081+
if (r_chat_id.is_error()) {
6082+
return fail_query_with_error(std::move(query), 400, r_chat_id.error().message());
6083+
}
6084+
auto chat_id = r_chat_id.move_as_ok();
6085+
check_business_connection(business_connection_id, std::move(query),
6086+
[this, chat_id, on_success = std::move(on_success)](
6087+
const BusinessConnection *business_connection, PromisedQueryPtr query) mutable {
6088+
on_success(business_connection, chat_id, std::move(query));
6089+
});
6090+
}
6091+
60776092
template <class OnSuccess>
60786093
void Client::check_bot_command_scope(BotCommandScope &&scope, PromisedQueryPtr query, OnSuccess on_success) {
60796094
CHECK(scope.scope_ != nullptr);
@@ -10059,15 +10074,10 @@ td::Status Client::process_stop_poll_query(PromisedQueryPtr &query) {
1005910074
[this, business_connection_id = business_connection_id.str(), chat_id_str = chat_id.str(), message_id](
1006010075
object_ptr<td_api::ReplyMarkup> reply_markup, PromisedQueryPtr query) {
1006110076
if (!business_connection_id.empty()) {
10062-
auto r_chat_id = get_business_connection_chat_id(chat_id_str);
10063-
if (r_chat_id.is_error()) {
10064-
return fail_query_with_error(std::move(query), 400, r_chat_id.error().message());
10065-
}
10066-
auto chat_id = r_chat_id.move_as_ok();
10067-
return check_business_connection(
10068-
business_connection_id, std::move(query),
10069-
[this, business_connection_id, chat_id, message_id, reply_markup = std::move(reply_markup)](
10070-
const BusinessConnection *business_connection, PromisedQueryPtr query) mutable {
10077+
return check_business_connection_chat_id(
10078+
business_connection_id, chat_id_str, std::move(query),
10079+
[this, business_connection_id, message_id, reply_markup = std::move(reply_markup)](
10080+
const BusinessConnection *business_connection, int64 chat_id, PromisedQueryPtr query) mutable {
1007110081
send_request(
1007210082
make_object<td_api::stopBusinessPoll>(business_connection_id, chat_id, message_id,
1007310083
std::move(reply_markup)),
@@ -10224,17 +10234,11 @@ td::Status Client::process_send_media_group_query(PromisedQueryPtr &query) {
1022410234
input_message_contents = std::move(input_message_contents)](object_ptr<td_api::ReplyMarkup> reply_markup,
1022510235
PromisedQueryPtr query) mutable {
1022610236
if (!business_connection_id.empty()) {
10227-
auto r_chat_id = get_business_connection_chat_id(chat_id_str);
10228-
if (r_chat_id.is_error()) {
10229-
return fail_query_with_error(std::move(query), 400, r_chat_id.error().message());
10230-
}
10231-
auto chat_id = r_chat_id.move_as_ok();
10232-
return check_business_connection(
10233-
business_connection_id, std::move(query),
10234-
[this, chat_id, reply_parameters = std::move(reply_parameters), disable_notification, protect_content,
10235-
effect_id, input_message_contents = std::move(input_message_contents),
10236-
reply_markup = std::move(reply_markup)](const BusinessConnection *business_connection,
10237-
PromisedQueryPtr query) mutable {
10237+
return check_business_connection_chat_id(
10238+
business_connection_id, chat_id_str, std::move(query),
10239+
[this, reply_parameters = std::move(reply_parameters), disable_notification, protect_content, effect_id,
10240+
input_message_contents = std::move(input_message_contents), reply_markup = std::move(reply_markup)](
10241+
const BusinessConnection *business_connection, int64 chat_id, PromisedQueryPtr query) mutable {
1023810242
send_request(
1023910243
make_object<td_api::sendBusinessMessageAlbum>(
1024010244
business_connection->id_, chat_id, get_input_message_reply_to(std::move(reply_parameters)),
@@ -10277,11 +10281,10 @@ td::Status Client::process_send_chat_action_query(PromisedQueryPtr &query) {
1027710281
return td::Status::Error(400, "Wrong parameter action in request");
1027810282
}
1027910283
if (!business_connection_id.empty()) {
10280-
TRY_RESULT(chat_id, get_business_connection_chat_id(chat_id_str));
10281-
check_business_connection(
10282-
business_connection_id, std::move(query),
10283-
[this, chat_id, action = std::move(action)](const BusinessConnection *business_connection,
10284-
PromisedQueryPtr query) mutable {
10284+
check_business_connection_chat_id(
10285+
business_connection_id, chat_id_str.str(), std::move(query),
10286+
[this, action = std::move(action)](const BusinessConnection *business_connection, int64 chat_id,
10287+
PromisedQueryPtr query) mutable {
1028510288
send_request(make_object<td_api::sendChatAction>(chat_id, 0, business_connection->id_, std::move(action)),
1028610289
td::make_unique<TdOnOkQueryCallback>(std::move(query)));
1028710290
});
@@ -10337,15 +10340,10 @@ td::Status Client::process_edit_message_text_query(PromisedQueryPtr &query) {
1033710340
input_message_text = std::move(input_message_text)](object_ptr<td_api::ReplyMarkup> reply_markup,
1033810341
PromisedQueryPtr query) mutable {
1033910342
if (!business_connection_id.empty()) {
10340-
auto r_chat_id = get_business_connection_chat_id(chat_id_str);
10341-
if (r_chat_id.is_error()) {
10342-
return fail_query_with_error(std::move(query), 400, r_chat_id.error().message());
10343-
}
10344-
auto chat_id = r_chat_id.move_as_ok();
10345-
return check_business_connection(
10346-
business_connection_id, std::move(query),
10347-
[this, business_connection_id, chat_id, message_id, input_message_text = std::move(input_message_text),
10348-
reply_markup = std::move(reply_markup)](const BusinessConnection *business_connection,
10343+
return check_business_connection_chat_id(
10344+
business_connection_id, chat_id_str, std::move(query),
10345+
[this, business_connection_id, message_id, input_message_text = std::move(input_message_text),
10346+
reply_markup = std::move(reply_markup)](const BusinessConnection *business_connection, int64 chat_id,
1034910347
PromisedQueryPtr query) mutable {
1035010348
send_request(make_object<td_api::editBusinessMessageText>(business_connection_id, chat_id, message_id,
1035110349
std::move(reply_markup),
@@ -10399,16 +10397,11 @@ td::Status Client::process_edit_message_live_location_query(PromisedQueryPtr &qu
1039910397
location = std::move(location), live_period, heading,
1040010398
proximity_alert_radius](object_ptr<td_api::ReplyMarkup> reply_markup, PromisedQueryPtr query) mutable {
1040110399
if (!business_connection_id.empty()) {
10402-
auto r_chat_id = get_business_connection_chat_id(chat_id_str);
10403-
if (r_chat_id.is_error()) {
10404-
return fail_query_with_error(std::move(query), 400, r_chat_id.error().message());
10405-
}
10406-
auto chat_id = r_chat_id.move_as_ok();
10407-
return check_business_connection(
10408-
business_connection_id, std::move(query),
10409-
[this, business_connection_id, chat_id, message_id, location = std::move(location), live_period,
10410-
heading, proximity_alert_radius, reply_markup = std::move(reply_markup)](
10411-
const BusinessConnection *business_connection, PromisedQueryPtr query) mutable {
10400+
return check_business_connection_chat_id(
10401+
business_connection_id, chat_id_str, std::move(query),
10402+
[this, business_connection_id, message_id, location = std::move(location), live_period, heading,
10403+
proximity_alert_radius, reply_markup = std::move(reply_markup)](
10404+
const BusinessConnection *business_connection, int64 chat_id, PromisedQueryPtr query) mutable {
1041210405
send_request(make_object<td_api::editBusinessMessageLiveLocation>(
1041310406
business_connection_id, chat_id, message_id, std::move(reply_markup),
1041410407
std::move(location), live_period, heading, proximity_alert_radius),
@@ -10455,16 +10448,11 @@ td::Status Client::process_edit_message_media_query(PromisedQueryPtr &query) {
1045510448
input_message_content = std::move(input_media)](object_ptr<td_api::ReplyMarkup> reply_markup,
1045610449
PromisedQueryPtr query) mutable {
1045710450
if (!business_connection_id.empty()) {
10458-
auto r_chat_id = get_business_connection_chat_id(chat_id_str);
10459-
if (r_chat_id.is_error()) {
10460-
return fail_query_with_error(std::move(query), 400, r_chat_id.error().message());
10461-
}
10462-
auto chat_id = r_chat_id.move_as_ok();
10463-
return check_business_connection(
10464-
business_connection_id, std::move(query),
10465-
[this, business_connection_id, chat_id, message_id,
10466-
input_message_content = std::move(input_message_content), reply_markup = std::move(reply_markup)](
10467-
const BusinessConnection *business_connection, PromisedQueryPtr query) mutable {
10451+
return check_business_connection_chat_id(
10452+
business_connection_id, chat_id_str, std::move(query),
10453+
[this, business_connection_id, message_id, input_message_content = std::move(input_message_content),
10454+
reply_markup = std::move(reply_markup)](const BusinessConnection *business_connection, int64 chat_id,
10455+
PromisedQueryPtr query) mutable {
1046810456
send_request(make_object<td_api::editBusinessMessageMedia>(business_connection_id, chat_id,
1046910457
message_id, std::move(reply_markup),
1047010458
std::move(input_message_content)),
@@ -10511,16 +10499,11 @@ td::Status Client::process_edit_message_caption_query(PromisedQueryPtr &query) {
1051110499
caption = std::move(caption),
1051210500
show_caption_above_media](object_ptr<td_api::ReplyMarkup> reply_markup, PromisedQueryPtr query) mutable {
1051310501
if (!business_connection_id.empty()) {
10514-
auto r_chat_id = get_business_connection_chat_id(chat_id_str);
10515-
if (r_chat_id.is_error()) {
10516-
return fail_query_with_error(std::move(query), 400, r_chat_id.error().message());
10517-
}
10518-
auto chat_id = r_chat_id.move_as_ok();
10519-
return check_business_connection(
10520-
business_connection_id, std::move(query),
10521-
[this, business_connection_id, chat_id, message_id, reply_markup = std::move(reply_markup),
10522-
caption = std::move(caption), show_caption_above_media](const BusinessConnection *business_connection,
10523-
PromisedQueryPtr query) mutable {
10502+
return check_business_connection_chat_id(
10503+
business_connection_id, chat_id_str, std::move(query),
10504+
[this, business_connection_id, message_id, reply_markup = std::move(reply_markup),
10505+
caption = std::move(caption), show_caption_above_media](
10506+
const BusinessConnection *business_connection, int64 chat_id, PromisedQueryPtr query) mutable {
1052410507
send_request(make_object<td_api::editBusinessMessageCaption>(
1052510508
business_connection_id, chat_id, message_id, std::move(reply_markup),
1052610509
std::move(caption), show_caption_above_media),
@@ -10563,15 +10546,10 @@ td::Status Client::process_edit_message_reply_markup_query(PromisedQueryPtr &que
1056310546
[this, business_connection_id = business_connection_id.str(), chat_id_str = chat_id.str(), message_id](
1056410547
object_ptr<td_api::ReplyMarkup> reply_markup, PromisedQueryPtr query) {
1056510548
if (!business_connection_id.empty()) {
10566-
auto r_chat_id = get_business_connection_chat_id(chat_id_str);
10567-
if (r_chat_id.is_error()) {
10568-
return fail_query_with_error(std::move(query), 400, r_chat_id.error().message());
10569-
}
10570-
auto chat_id = r_chat_id.move_as_ok();
10571-
return check_business_connection(
10572-
business_connection_id, std::move(query),
10573-
[this, business_connection_id, chat_id, message_id, reply_markup = std::move(reply_markup)](
10574-
const BusinessConnection *business_connection, PromisedQueryPtr query) mutable {
10549+
return check_business_connection_chat_id(
10550+
business_connection_id, chat_id_str, std::move(query),
10551+
[this, business_connection_id, message_id, reply_markup = std::move(reply_markup)](
10552+
const BusinessConnection *business_connection, int64 chat_id, PromisedQueryPtr query) mutable {
1057510553
send_request(make_object<td_api::editBusinessMessageReplyMarkup>(business_connection_id, chat_id,
1057610554
message_id, std::move(reply_markup)),
1057710555
td::make_unique<TdOnReturnBusinessMessageCallback>(this, business_connection_id,
@@ -12188,17 +12166,11 @@ void Client::do_send_message(object_ptr<td_api::InputMessageContent> input_messa
1218812166
input_message_content = std::move(input_message_content)](object_ptr<td_api::ReplyMarkup> reply_markup,
1218912167
PromisedQueryPtr query) mutable {
1219012168
if (!business_connection_id.empty()) {
12191-
auto r_chat_id = get_business_connection_chat_id(chat_id_str);
12192-
if (r_chat_id.is_error()) {
12193-
return fail_query_with_error(std::move(query), 400, r_chat_id.error().message());
12194-
}
12195-
auto chat_id = r_chat_id.move_as_ok();
12196-
return check_business_connection(
12197-
business_connection_id, std::move(query),
12198-
[this, chat_id, reply_parameters = std::move(reply_parameters), disable_notification, protect_content,
12199-
effect_id, reply_markup = std::move(reply_markup),
12200-
input_message_content = std::move(input_message_content)](const BusinessConnection *business_connection,
12201-
PromisedQueryPtr query) mutable {
12169+
return check_business_connection_chat_id(
12170+
business_connection_id, chat_id_str, std::move(query),
12171+
[this, reply_parameters = std::move(reply_parameters), disable_notification, protect_content, effect_id,
12172+
reply_markup = std::move(reply_markup), input_message_content = std::move(input_message_content)](
12173+
const BusinessConnection *business_connection, int64 chat_id, PromisedQueryPtr query) mutable {
1220212174
send_request(make_object<td_api::sendBusinessMessage>(
1220312175
business_connection->id_, chat_id,
1220412176
get_input_message_reply_to(std::move(reply_parameters)), disable_notification,

telegram-bot-api/Client.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,10 @@ class Client final : public WebhookActor::Callback {
344344
void check_business_connection(const td::string &business_connection_id, PromisedQueryPtr query,
345345
OnSuccess on_success);
346346

347+
template <class OnSuccess>
348+
void check_business_connection_chat_id(const td::string &business_connection_id, const td::string &chat_id_str,
349+
PromisedQueryPtr query, OnSuccess on_success);
350+
347351
template <class OnSuccess>
348352
void check_bot_command_scope(BotCommandScope &&scope, PromisedQueryPtr query, OnSuccess on_success);
349353

0 commit comments

Comments
 (0)