import type { MatrixClient } from "matrix-js-sdk"; import type { TRole } from "../store/types.js"; import { getLevel, getUserById } from "../helpers.js"; import { config } from "../config.js"; import { state } from "../store/store.js"; const onAnyMessage = ( client: MatrixClient, _text: string, roomId: string, sender: string, ) => { const date = Date.now(); const user = getUserById(sender); if (user.id === ":") { state.users.push({ id: sender, role: "USER", experience: 0, money: 10, aiCost: 0, lastMessageTimestamp: date, lastExperienceGainTimestamp: date, lastMoneyGainTimestamp: date, }); return onAnyMessage(client, _text, roomId, sender); } const levelBefore = getLevel(user.experience); if ( date > user.lastExperienceGainTimestamp + config.app.experience.timeout ) { user.experience += config.app.experience.gain; user.lastExperienceGainTimestamp = date; } user.lastMessageTimestamp = date; const levelAfter = getLevel(user.experience); if (levelAfter.level > levelBefore.level) { client.sendHtmlMessage( roomId, "", `${sender} - You are now level ${levelAfter.level}`, ); } }; const onMissingRole = ( client: MatrixClient, userRole: TRole, roomId: string, ) => { client.sendHtmlMessage( roomId, "", `You are missing the required role.
Your current role is ${userRole}`, ); }; export { onAnyMessage, onMissingRole };