false, 'ERROR' => 'method_not_allowed'], 405); } $messageId = (int) ($_GET['MessageID'] ?? 0); if ($messageId <= 0) jsonResponse(['OK' => false, 'ERROR' => 'message_id_required']); $rows = queryTimed( "SELECT * FROM Hub_Reactions WHERE MessageID = ? ORDER BY EmojiName, CreatedAt", [$messageId] ); // Group by emoji $grouped = []; foreach ($rows as $r) { $emoji = $r['EmojiName']; if (!isset($grouped[$emoji])) { $grouped[$emoji] = ['EmojiName' => $emoji, 'Count' => 0, 'Agents' => []]; } $grouped[$emoji]['Count']++; $grouped[$emoji]['Agents'][] = $r['AgentAddress']; } jsonResponse([ 'OK' => true, 'Reactions' => array_values($grouped), ]);