// Функция для обработки inline-запросов
void handleInlineQuery(fb::Update& u) {
auto inline_query = u[tg_apih::inline_query];
String query_id = inline_query[tg_apih::id];
String query_text = inline_query[tg_apih::query];
query_text.trim();
if (query_text.length() == 0) {
fb::Packet p = bot.beginPacket(tg_cmd::answerInlineQuery);
p[tg_api::inline_query_id] = query_id;
p[tg_api::results]('[');
if (p('{')) {
p[tg_api::type] = "article";
p[tg_api::id] = "1";
p[tg_api::title] = "Введите число";
p[tg_api::input_message_content]('{');
p[tg_api::message_text] = "Введите число (например: 10)";
p('}');
p('}');
}
p(']');
fb::Result res = bot.sendPacket(p);
bot.sendMessage(fb::Message(res, "271559485"));
return;
}
if (!isNumber(query_text) || query_text.toInt() <= 0) {
fb::Packet p = bot.beginPacket(tg_cmd::answerInlineQuery);
p[tg_api::inline_query_id] = query_id;
p[tg_api::results]('[');
if (p('{')) {
p[tg_api::type] = "article";
p[tg_api::id] = "error";
p[tg_api::title] = "Введите положительное число";
p[tg_api::input_message_content]('{');
p[tg_api::message_text] = "Введите положительное число (например: 10)";
p('}');
p('}');
}
p(']');
bot.sendPacket(p);
return;
}
int maxValue = query_text.toInt();
if (maxValue > 1000) maxValue = 1000;
fb::Packet p = bot.beginPacket(tg_cmd::answerInlineQuery);
p[tg_api::inline_query_id] = query_id;
p[tg_api::results]('[');
for (int i = 1; i <= 3; i++) {
if (p('{')) {
p[tg_api::type] = "article";
p[tg_api::id] = String(millis() + i);
p[tg_api::title] = "Вариант " + String(i) + ": " + String(random(1, maxValue + 1));
p[tg_api::input_message_content]('{');
p[tg_api::message_text] = "Число: " + String(random(1, maxValue + 1));
p('}');
p('}');
}
}
p(']');
bot.sendPacket(p);
}
// Основной обработчик обновлений
void updateh(fb::Update& u) {
if (u.has(tg_apih::inline_query)) {
handleInlineQuery(u);
} else {
bot.sendMessage(fb::Message("false", "271559485"));
}
}
// void updateWeb(sets::Updater& upd) {
// if (alert_f) {
// alert_f = false;
// upd.alert(inline_query);
// }
// // примечание: при ручных изменениях в базе данных отправлять новые значения не нужно!
// // библиотека сделает это сама
// }
void setup() {
randomSeed(analogRead(0));
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) delay(500);
#ifdef ESP32
LittleFS.begin(true);
#else
LittleFS.begin();
#endif
sett.begin();
sett.onBuild(build);
// sett.onUpdate(updateWeb);
bot.attachUpdate(updateh);
bot.setToken(BOT_TOKEN);
bot.setPollMode(fb::Poll::Long, 60000);
}
void loop() {
sett.tick();
bot.tick();
}