Открыть бот для реакций под постов?
Здравствуйте. Хочу открыть бот как @like. У меня все работает но но у меня такая проблема. Как можно знать тот человек который уже лайкнул (думал записать telegram_id пользователя но как можно реализовать?).
id поста зашиваете в кнопки реакций
CREATE TABLE 'reaction' ( 'id' int(11) NOT NULL, 'id_post' bigint(20) NOT NULL, 'like_id' varchar(32) DEFAULT NULL, 'dislike_id' varchar(32) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
как можно добавить user_id если лайкнуть 1000 людей
CREATE TABLE 'reaction' ( 'id' int(11) NOT NULL, 'id_post' int(11) NOT NULL, 'user_id' bigint(20) DEFAULT NULL, 'like_id' int(11) DEFAULT NULL, 'dislike_id' int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
if($data->is_channel) { $id = uniqid(); $chan = [ [['text' => '?', 'callback_data' => 'like_' . $id], ['text' => '?', 'callback_data' => 'dislike_' . $id]], [['text' => 'Поделиться', 'url' => 'https://telegram.me/share/url?url=https://telegram.me/' . $data->username . '/' . $data->message_id]] ]; $chan_btn = $telegram->buildInlineKeyBoard($chan); $db->insert('reaction', [ 'id_post' => $data->message_id, 'like_id' => 'like_' . $id, 'dislike_id' => 'dislike_' . $id ]); $telegram->editMessageReplyMarkup([ 'chat_id' => $data->chat_id, 'message_id' => $data->message_id, 'reply_markup' => $chan_btn ]); }
А логика обработки нажатия на реакции?
if ($data->callback_query) { if (preg_match('/like_.*/', $data->text) ) { $data_inline = explode('_', $data->text); $reaction = $data_inline[0]; $id = $data_inline[1]; $liked_user = $db->get('reactions', 'user_id', ['user_id' => $data->user_id]); $i = $db->select("SELECT * FROM 'reactions' WHERE 'like_id' = ". $data->text)->rowCount();; if($data_inline[0] == 'like' && $liked_user == false) { $db->update('reactions', [ 'id_post' => $data->message_id, 'user_id' => $data_id ]); $telegram->answerCallbackQuery([ 'callback_query_id' => $data->callback_query_id, 'text' => 'Спасибо за лайк', 'show_alert' => false ]); $chan = [ [['text' => '?' . ++$i, 'callback_data' => 'like_' .$id], ['text' => '?', 'callback_data' => 'dislike_' .$id]], [['text' => 'Поделиться', 'url' => 'https://telegram.me/share/url?url=https://telegram.me/' . $data->username . '/' . $data->message_id]] ]; $chan_btn = $telegram->buildInlineKeyBoard($chan); $telegram->editMessageReplyMarkup([ 'chat_id' => $data->chat_id, 'message_id' => $data->message_id, 'reply_markup' => $chan_btn ]); } else { $telegram->answerCallbackQuery([ 'callback_query_id' => $data->callback_query_id, 'text' => 'Вы уже лайкули', 'show_alert' => false ]); } } }