// ============================================================================ // Miku Control Panel ā DM Management Module // ============================================================================ async function loadDMUsers() { try { const result = await apiCall('/dms/users'); displayDMUsers(result.users); } catch (error) { console.error('Failed to load DM users:', error); } } function displayDMUsers(users) { const container = document.getElementById('dm-users-list'); if (!users || users.length === 0) { container.innerHTML = '
No DM conversations found.
'; return; } let html = 'ID: ${user.user_id}
Total Messages: ${user.total_messages}
User Messages: ${user.user_messages}
Bot Messages: ${user.bot_messages}
Last Activity: ${lastTime}
Last Message: ${lastMessage}
No conversations found for this user.
'; } else { conversations.forEach((msg, index) => { console.log(`š Processing message ${index}:`, msg); const timestamp = new Date(msg.timestamp).toLocaleString(); const sender = msg.is_bot_message ? 'š¤ Miku' : 'š¤ User'; const content = msg.content || '[No text content]'; const messageId = msg.message_id || msg.timestamp; // Use message_id or timestamp as identifier const escapedContent = content.replace(/'/g, "\\'").replace(/"/g, '\\"'); // Debug: Log message details console.log(`š Message ${index}: id=${messageId}, is_bot=${msg.is_bot_message}, content="${content.substring(0, 30)}..."`); // Only show delete button for bot messages (Miku can only delete her own messages) const deleteButton = msg.is_bot_message ? `` : ''; html += ` `; }); } html += `No analysis reports found yet.
User ID: ${report.user_id}
"${report.your_feelings}"
"${report.notable_moment}"
No blocked users.
'; return; } let html = 'ID: ${user.user_id}
Blocked: ${new Date(user.blocked_at).toLocaleString()}
Blocked by: ${user.blocked_by}