Disallow switch_inline_query in channels.
GitOrigin-RevId: ad18c78f9abf4114ae72229f1b2f863f13ccba7a
This commit is contained in:
parent
b1d563719a
commit
34a26188c6
@ -16715,11 +16715,11 @@ Result<unique_ptr<ReplyMarkup>> MessagesManager::get_dialog_reply_markup(
|
||||
|
||||
bool only_inline_keyboard = is_broadcast;
|
||||
bool request_buttons_allowed = dialog_type == DialogType::User;
|
||||
bool switch_inline_current_chat_buttons_allowed = !is_broadcast;
|
||||
bool switch_inline_buttons_allowed = !is_broadcast;
|
||||
|
||||
TRY_RESULT(reply_markup,
|
||||
get_reply_markup(std::move(reply_markup_ptr), td_->auth_manager_->is_bot(), only_inline_keyboard,
|
||||
request_buttons_allowed, switch_inline_current_chat_buttons_allowed));
|
||||
request_buttons_allowed, switch_inline_buttons_allowed));
|
||||
if (reply_markup == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -345,7 +345,7 @@ static Result<KeyboardButton> get_keyboard_button(tl_object_ptr<td_api::keyboard
|
||||
}
|
||||
|
||||
static Result<InlineKeyboardButton> get_inline_keyboard_button(tl_object_ptr<td_api::inlineKeyboardButton> &&button,
|
||||
bool switch_inline_current_chat_buttons_allowed) {
|
||||
bool switch_inline_buttons_allowed) {
|
||||
CHECK(button != nullptr);
|
||||
if (!clean_input_string(button->text_)) {
|
||||
return Status::Error(400, "Keyboard button text must be encoded in UTF-8");
|
||||
@ -379,8 +379,10 @@ static Result<InlineKeyboardButton> get_inline_keyboard_button(tl_object_ptr<td_
|
||||
break;
|
||||
case td_api::inlineKeyboardButtonTypeSwitchInline::ID: {
|
||||
auto switch_inline_button = move_tl_object_as<td_api::inlineKeyboardButtonTypeSwitchInline>(button->type_);
|
||||
if (!switch_inline_current_chat_buttons_allowed && switch_inline_button->in_current_chat_) {
|
||||
return Status::Error(400, "Can't use switch_inline_query_current_chat in a channel chat");
|
||||
if (!switch_inline_buttons_allowed) {
|
||||
const char *button_name =
|
||||
switch_inline_button->in_current_chat_ ? "switch_inline_query_current_chat" : "switch_inline_query";
|
||||
return Status::Error(400, PSLICE() << "Can't use " << button_name << " in a channel chat");
|
||||
}
|
||||
|
||||
current_button.type = switch_inline_button->in_current_chat_
|
||||
@ -404,7 +406,7 @@ static Result<InlineKeyboardButton> get_inline_keyboard_button(tl_object_ptr<td_
|
||||
|
||||
Result<unique_ptr<ReplyMarkup>> get_reply_markup(tl_object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr, bool is_bot,
|
||||
bool only_inline_keyboard, bool request_buttons_allowed,
|
||||
bool switch_inline_current_chat_buttons_allowed) {
|
||||
bool switch_inline_buttons_allowed) {
|
||||
CHECK(!only_inline_keyboard || !request_buttons_allowed);
|
||||
if (reply_markup_ptr == nullptr || !is_bot) {
|
||||
return nullptr;
|
||||
@ -473,8 +475,7 @@ Result<unique_ptr<ReplyMarkup>> get_reply_markup(tl_object_ptr<td_api::ReplyMark
|
||||
continue;
|
||||
}
|
||||
|
||||
TRY_RESULT(current_button,
|
||||
get_inline_keyboard_button(std::move(button), switch_inline_current_chat_buttons_allowed));
|
||||
TRY_RESULT(current_button, get_inline_keyboard_button(std::move(button), switch_inline_buttons_allowed));
|
||||
|
||||
row_buttons.push_back(std::move(current_button));
|
||||
row_button_count++;
|
||||
|
@ -60,7 +60,7 @@ unique_ptr<ReplyMarkup> get_reply_markup(tl_object_ptr<telegram_api::ReplyMarkup
|
||||
|
||||
Result<unique_ptr<ReplyMarkup>> get_reply_markup(tl_object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr, bool is_bot,
|
||||
bool only_inline_keyboard, bool request_buttons_allowed,
|
||||
bool switch_inline_current_chat_buttons_allowed) TD_WARN_UNUSED_RESULT;
|
||||
bool switch_inline_buttons_allowed) TD_WARN_UNUSED_RESULT;
|
||||
|
||||
tl_object_ptr<telegram_api::ReplyMarkup> get_input_reply_markup(const unique_ptr<ReplyMarkup> &reply_markup);
|
||||
|
||||
|
Reference in New Issue
Block a user