Как сделать счетчик нажатий в telegram bot api?

116
16 января 2022, 04:50

Всем привет.

Есть работающий простой бот, который что-то куда-то отправляет. Захотелось прикрутить к постам кнопки Like\DisLike. Нечто подобное выглядит вот так: https://prnt.sc/qeqdco

Посему вопросы такие:

  • Должно быть только один инкремент от одного пользователя, если он уже лайкал и нажимает второй раз, то срабатывает декремент. Как то нужно фильтровать или запоминать пользователя. Как?
  • Как перехватить нажатие кнопки? У меня в возвращаемом массиве вообще нет поля callback_query. Хотя все мануалы ссылаются на работу с этим полем.

Ну и сам бот выглядит вот так:

$token_tg = "to:ken"; // Токен Телеграма
$chat_id = "-1001300id";
$message = 'В мире снаружи есть бесчисленное количество возможностей, и каждая из них — начало большой истории.';
/**
... в этой части подготавливаем картинку $res[$random]['name'] ...
*/
$keyboard = array(
    "inline_keyboard" => array(array(
                            array("text" => "LIKE", "callback_data" => "Like"),
                            array("text" => "DISLIKE", "callback_data" => "DisLike")))
);
$keyboard = json_encode($keyboard, true);
$ch = curl_init("https://api.telegram.org/bot$token_tg/sendPhoto?chat_id=$chat_id&photo=http://website.com/1TG/{$res[$random]['name']}&caption=$message&reply_markup=$keyboard");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($ch);
curl_close($ch);

Может есть какое-то уже готовое решение по установке лайк\дизлайк к сообщениям бота?

Answer 1

В базе данных делаете таблицу, где сохраняете идентификатор записи, под которой лайк\дислайк и id пользователя. Потом проверяете есть такая запись или нет. Если есть, добавляете и ставите +1, если нет, удаляете и ставите -1

READ ALSO
Как ускорить конвертацию svg в png через Inkscape

Как ускорить конвертацию svg в png через Inkscape

Сейчас конвертирую так: inkscape -z -e testpng -w 100 -h 100 test

147
Как вывести дату

Как вывести дату

Я из базы данных получаю дату публикации поста 2019-12-18 12:11:57 в таком видеЯ бы хотел выводить на сайте дату таким образом: 18 декабря, 2019

381