@air1on

Как сделать запрос к базе в моменте answerInlineQuery?

Всем привет, братцы и сестрицы!
Подскажите пожалуйста, как подгружать более 50 запросов из базы.
При лимите больше 50 ловлю Bad Request: RESULTS_TOO_MUCH, согласно ограничениям телеграмм
$bot->inlineQuery(function ($inlineQuery) use ($bot) {
	mb_internal_encoding("UTF-8");
	$qid = $inlineQuery->getId();
	$msgs = [];
	// определяем начальные данные для подключения к базе, опускаю этот момент
	$offset = 0; // 100% дальше будет нужно
	$query = "
	SELECT
	  pre_tovars.id,
	  pre_tovars.price,
	FROM pre_tovars
	LIMIT 50 OFFSET $offset"
		$i = 1;
	while ($row = $db_response->fetch_object()) {
		$idCode = $row->id;
		$price = $row->price;
		$str = "my-site/items/" . $idCode . "/";
		// Это содержимое, выводится, когда тыкаем на выбранный inline
		$base = new \TelegramBot\Api\Types\Inline\InputMessageContent\Text($str,"Html");
		// сам inline
		$msg = new \TelegramBot\Api\Types\Inline\QueryResult\Article($i, $code, $idCode);
		// указываем, что в ответ к этому inline надо показать
		$msg->setInputMessageContent($base); 
		$i++;
		// кладём все дела в массив для последующей отправки
		$msgs[] = $msg;
	 	
   }
		// отправка данных в телеграмм
		try{
			$result = $bot->answerInlineQuery($qid, $msgs, 10, false);
		}catch(Exception $e){
			file_put_contents("rdata",print_r($e, true));
		}
});
// запускаем обработку
$bot->run();

Знаю, что есть специальный флаг next_offset в answerInlineQuery, но не могу догнать, как это связать с запросом к базе. Помогите, кто чем может, не сплю 2-е сутки))
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 1
BedwaRe
@BedwaRe
Пиши код
Здарова, Васек! Давай разделять мух от котлет =)
1. Если телеграм имеет ограничение в 50 позиций, то чтобы этот лимит тебе увеличить надо в телеграм писать и просить поднять лимит. Ну или спроси хотя бы почему 50 то =)
2. Чтобы подгрузить из базы больше 50 просто лимит надо убрать в запросе, но тогда телеграм тебя пошлёт (RESULTS_TOO_MUCH).
3. Зачем тебе больше 50 позиций в инлайне? Инлайн он вроде для подсказок.. Если надо большую выдачу, наверное, это надо не в инлайне делать.

Это мои мысли, так конечно посмотри вокруг, погляди, может там можно асинхронно как-то подгружать позиции или ещё что. Я сам вообще так-то ботами не занимаюсь. Так, просто рассуждаю...

Ещё совет - подумай сперва что хочешь сделать, потом делай. Так и вопросы проще задавать будет. Кода много сейчас - главное какая идея была изначально заложена. А то ща выглядит, что ты просто интернет магазин хочешь сделать на инлайне с баннерами, слайдерами и оплатой. Тут надо понять как этим люди пользоваться будут, как ты сам этим пользоваться будешь. А из телеги как ответят про лимит напиши плз что скажут - самому интересно узнать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы