35 lines
No EOL
1.1 KiB
JavaScript
35 lines
No EOL
1.1 KiB
JavaScript
// memory/chat.js
|
|
const { saveMemory, getMemory, listMemory } = require('./index');
|
|
|
|
function logChatMessage(db, username, message) {
|
|
const label = `chat:${username.toLowerCase()}`;
|
|
|
|
getMemory(db, label, (err, existing) => {
|
|
const history = Array.isArray(existing) ? existing : [];
|
|
history.push({ message, timestamp: Date.now() });
|
|
|
|
// Keep the latest 20 messages
|
|
const trimmed = history.slice(-20);
|
|
saveMemory(db, label, trimmed);
|
|
});
|
|
}
|
|
|
|
function getLastMessageFrom(db, username, callback) {
|
|
const label = `chat:${username.toLowerCase()}`;
|
|
getMemory(db, label, (err, history) => {
|
|
if (err || !history || history.length === 0) return callback(null, null);
|
|
callback(null, history[history.length - 1]);
|
|
});
|
|
}
|
|
|
|
function listKnownPlayers(db, callback) {
|
|
listMemory(db, (err, entries) => {
|
|
if (err) return callback(err, []);
|
|
const players = entries
|
|
.filter(e => e.label.startsWith('chat:'))
|
|
.map(e => e.label.replace('chat:', ''));
|
|
callback(null, players);
|
|
});
|
|
}
|
|
|
|
module.exports = { logChatMessage, getLastMessageFrom, listKnownPlayers }; |