3 Commits
3 changed files with 26 additions and 3 deletions
+22 -3
View File
@@ -65,10 +65,11 @@ void cmd::handle_inline_query(context *ctx, td_api::updateNewInlineQuery &query)
std::vector<td_api::object_ptr<td_api::InputInlineQueryResult>> results;
if (url::is_url_valid(query.query_)) {
uint64_t pendingQueryId = new_pending_query_id();
spdlog::debug("inserting new inline query for url {}", query.query_);
ctx->inlineQueries.insert(std::pair<uint64_t, pending_inline_query>(pendingQueryId, {query.query_, std::chrono::steady_clock::now() + std::chrono::hours(5)}));
auto messageButton = td_api::make_object<td_api::inlineKeyboardButton>(
"press to shorten",
"shorten",
static_cast<td_api::object_ptr<td_api::InlineKeyboardButtonType>>(td_api::make_object<td_api::inlineKeyboardButtonTypeCallback>(std::to_string(pendingQueryId)))
);
@@ -91,7 +92,7 @@ void cmd::handle_inline_query(context *ctx, td_api::updateNewInlineQuery &query)
)),
static_cast<td_api::object_ptr<td_api::InputMessageContent>>(td_api::make_object<td_api::inputMessageText>(
td_api::make_object<td_api::formattedText>(
query.query_,
"press the button to shorten",
std::move(std::vector<td_api::object_ptr<td_api::textEntity>>())
),
td_api::make_object<td_api::linkPreviewOptions>(true, "", false, false, false),
@@ -104,7 +105,7 @@ void cmd::handle_inline_query(context *ctx, td_api::updateNewInlineQuery &query)
false, // is_personal
nullptr, // button
std::move(results),
600, // cache_time
0, // cache_time
"" // next_offset
), {});
}
@@ -163,6 +164,24 @@ void cmd::handle_callback_query(context *ctx, td_api::updateNewInlineCallbackQue
}
}
void cmd::handle_chosen_inline_result(context *ctx, td_api::updateNewChosenInlineResult &result) {
shorten_link(result.query_, ctx, [ctx, inlineMessageId = result.inline_message_id_](std::string url){
ctx->tg->send_query(td_api::make_object<td_api::editInlineMessageText>(
inlineMessageId,
nullptr, // reply_markup
static_cast<td_api::object_ptr<td_api::InputMessageContent>>(td_api::make_object<td_api::inputMessageText>(
td_api::make_object<td_api::formattedText>(
url,
std::move(std::vector<td_api::object_ptr<td_api::textEntity>>())
),
td_api::make_object<td_api::linkPreviewOptions>(true, "", false, false, false),
//nullptr,
false
))
), {});
});
}
bool cmd::shorten_link(std::string link, context *ctx, std::function<void(std::string)> cb) {
spdlog::debug("creating CURL request");
CURL *req = curl_easy_init();
+1
View File
@@ -8,6 +8,7 @@ namespace cmd {
void handle_regular_message(context *ctx, td_api::message &msg);
void handle_inline_query(context *ctx, td_api::updateNewInlineQuery &query);
void handle_callback_query(context *ctx, td_api::updateNewInlineCallbackQuery &query);
void handle_chosen_inline_result(context *ctx, td_api::updateNewChosenInlineResult &result);
bool shorten_link(std::string link, context *ctx, std::function<void(std::string)> cb);
uint64_t new_pending_query_id();
+3
View File
@@ -142,6 +142,9 @@ void async_startup(uv_idle_t *h) {
[ctx](td_api::updateNewInlineCallbackQuery &upd) {
cmd::handle_callback_query(ctx, upd);
},
[ctx](td_api::updateNewChosenInlineResult &upd) {
cmd::handle_chosen_inline_result(ctx, upd);
},
[](td_api::Object &obj){}
));
}, nullptr);