diff --git a/package.json b/package.json index 599ba48..146b882 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aslobot-matrix", - "version": "0.7.0", + "version": "0.6.0", "description": "", "license": "ISC", "author": "", diff --git a/src/config.preset.json b/src/config.preset.json index 66ea18d..899e234 100644 --- a/src/config.preset.json +++ b/src/config.preset.json @@ -14,12 +14,7 @@ "gain": 5, "startingRequirement": 50, "multiplier": 1.25, - "timeout": 300000 - }, - "money": { - "gain": 2, - "startingValue": 10, - "timeout": 3600000 + "timeout": 60000 }, "ai": { "api": { diff --git a/src/helpers.ts b/src/helpers.ts index c396e7b..3a4bfd4 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -4,31 +4,14 @@ import { type IUser, type TRole } from "./store/types.js"; import type { ILevel } from "./types.js"; const getUserById = (userId: string): IUser => { - const user = state.users.find((user) => user.id === userId); - if (!user) { - return { + return ( + state.users.find((user) => user.id === userId) ?? { id: ":", role: "NONE", experience: 0, - money: 0, - aiCost: 0, lastMessageTimestamp: 0, - lastExperienceGainTimestamp: 0, - lastMoneyGainTimestamp: 0, - }; - } - - if (!user.experience) { - user.experience = 0; - } - if (!user.money) { - user.money = 0; - } - if (!user.aiCost) { - user.aiCost = 0; - } - - return user; + } + ); }; const checkRoles = (roles: TRole[], userId: string) => { diff --git a/src/modules/ai/ai.ts b/src/modules/ai/ai.ts index 8668f49..dae808d 100644 --- a/src/modules/ai/ai.ts +++ b/src/modules/ai/ai.ts @@ -3,9 +3,6 @@ import type { ICallbackStore } from "../types.js"; import { config } from "../../config.js"; import { getTextGemini, getImageGemini } from "../../services/ai/ai.js"; import { alts } from "./alts.js"; -import type { IAdminInstructions } from "./types.js"; -import { getUserById } from "../../helpers.js"; -import { prices } from "./prices.js"; let client: MatrixClient; @@ -18,58 +15,40 @@ const registerModuleAI = ( callbackStore.messageCallbacks.push({ startConditions: [`${config.app.triggerPrefix}ai `], callbackFunc: onAI, - allowedRoles: ["USER", "MODERATOR", "ADMIN"], }); callbackStore.messageCallbacks.push({ - startConditions: [`${config.app.triggerPrefix}img `], + startConditions: [ + ...alts.map((alt) => `${alt.key} when`), + ...alts.map((alt) => `${alt.key} ked`), + `!img`, + ], callbackFunc: onImageGen, - allowedRoles: ["USER", "MODERATOR", "ADMIN"], }); }; -const onAI = async (text: string, roomId: string, sender: string) => { - const user = getUserById(sender); - +const onAI = async (text: string, roomId: string) => { if (text.trim().length < 5) { return; } - let textMod = text.replace("!ai", "").trim().toLowerCase(); - let instructions = { - prefferedLanguages: ["english", "slovak"], - adminText: "Be concise, try to keep text as short as possible", - alts: alts, - } as IAdminInstructions; - - textMod = `Admin Instructions:\n${instructions}\nPrompt:\n${textMod}`; - - const responseAI = await getTextGemini(textMod); - - user.aiCost += responseAI.tokens * prices.text; - - client.sendTextMessage(roomId, responseAI.text); + const responseAI = await getTextGemini(text.replace("!ai ", "")); + client.sendTextMessage(roomId, responseAI); }; -const onImageGen = async (text: string, roomId: string, sender: string) => { - const user = getUserById(sender); - +const onImageGen = async (text: string, roomId: string) => { let textMod = text.replace("!img", "").trim().toLowerCase(); alts.forEach((alt) => { - alt.keys.forEach((key) => { - textMod = textMod.replaceAll(key, alt.alt); - }); + textMod = textMod.replaceAll(alt.key, alt.alt); }); - const responseAI = await getImageGemini(textMod); - - user.aiCost += responseAI.tokens * prices.image; - if (!responseAI.image || responseAI.image.length < 10) { + const buffer = await getImageGemini(textMod); + if (!buffer || buffer.length < 10) { return; } const imageName = `photo-img-gen.png`; - const uploadResult = await client.uploadContent(responseAI.image, { + const uploadResult = await client.uploadContent(buffer, { type: "image/png", name: imageName, }); @@ -80,7 +59,7 @@ const onImageGen = async (text: string, roomId: string, sender: string) => { url: uploadResult.content_uri, info: { mimetype: "image/png", - size: responseAI.image.length, + size: buffer.length, }, }); }; diff --git a/src/modules/ai/alts.ts b/src/modules/ai/alts.ts index f7b8ead..00689ad 100644 --- a/src/modules/ai/alts.ts +++ b/src/modules/ai/alts.ts @@ -2,73 +2,164 @@ import type { IAIAlt } from "./types.js"; const alts: IAIAlt[] = [ { - keys: [ - "satek", - "sateg", - "sadeg", - "coty", - "satko", - "sadko", - "vlado", - "vladko", - "vladimir", - "macak", - "macag", - ], + key: "satek", alt: "black cat", }, { - keys: ["macica", "macico"], + key: "sateg", + alt: "black cat", + }, + { + key: "sadeg", + alt: "black cat", + }, + { + key: "satko", + alt: "black cat", + }, + { + key: "sadko", + alt: "black cat", + }, + { + key: "vlado", + alt: "black cat", + }, + { + key: "vladko", + alt: "black cat", + }, + { + key: "vladimir", + alt: "black cat", + }, + { + key: "macag", + alt: "black cat", + }, + { + key: "vladko", + alt: "black cat", + }, + { + key: "macica", alt: "white cat", }, { - keys: ["gabor", "gaber", "martin", "marting"], + key: "macico", + alt: "white cat", + }, + { + key: "gabor", alt: "hedgehog", }, { - keys: [ - "madys", - "mandak", - "mandag", - "mando", - "mandik", - "madik", - "madeg", - "madek", - ], + key: "martin", + alt: "hedgehog", + }, + { + key: "madys", alt: "beaver", }, { - keys: ["janys", "jano", "janeg", "janek", "aslanek", "aslan", "aslo"], + key: "mandak", + alt: "beaver", + }, + { + key: "mando", + alt: "beaver", + }, + { + key: "mandik", + alt: "beaver", + }, + { + key: "madik", + alt: "beaver", + }, + { + key: "madeg", + alt: "beaver", + }, + { + key: "janys", alt: "lion", }, { - keys: ["marek", "mareg", "macek", "maceg", "rod"], + key: "jano", + alt: "lion", + }, + { + key: "janeg", + alt: "lion", + }, + { + key: "aslan", + alt: "lion", + }, + { + key: "aslo", + alt: "lion", + }, + { + key: "marek", alt: "purple snake", }, { - keys: ["lara", "kostur", "kosturik"], + key: "mareg", + alt: "purple snake", + }, + { + key: "maceg", + alt: "purple snake", + }, + { + key: "rod", + alt: "purple snake", + }, + { + key: "lara", alt: "ginger dog", }, { - keys: ["tato"], - alt: "green troll", + key: "kostur", + alt: "ginger dog", }, { - keys: ["mama", "monika", "monik"], - alt: "god's peasant", + key: "kosturik", + alt: "ginger dog", }, { - keys: ["puk", "pucik", "pucig"], - alt: "fat rat", + key: "tato", + alt: "troll", }, { - keys: ["becky", "beky", "beki"], - alt: "35 year old pink haired giantess", + key: "mama", + alt: "angel", }, { - keys: ["veronika", "veronik", "wewe", "wonka"], - alt: "lgbt princess with curly hair", + key: "monik", + alt: "angel", + }, + { + key: "puk", + alt: "rat", + }, + { + key: "becky", + alt: "giantess", + }, + { + key: "beky", + alt: "giantess", + }, + { + key: "beki", + alt: "giantess", + }, + { + key: "veronik", + alt: "lgbt princess", }, ]; diff --git a/src/modules/ai/prices.ts b/src/modules/ai/prices.ts deleted file mode 100644 index e323018..0000000 --- a/src/modules/ai/prices.ts +++ /dev/null @@ -1,6 +0,0 @@ -const prices = { - text: 0.000002, - image: 0.00003, -}; - -export { prices }; diff --git a/src/modules/ai/types.ts b/src/modules/ai/types.ts index 7f57e3b..c7b0c35 100644 --- a/src/modules/ai/types.ts +++ b/src/modules/ai/types.ts @@ -1,12 +1,6 @@ interface IAIAlt { - keys: string[]; + key: string; alt: string; } -interface IAdminInstructions { - prefferedLanguages: string[]; - adminText: string; - alts: IAIAlt[]; -} - -export { type IAIAlt, type IAdminInstructions }; +export { type IAIAlt }; diff --git a/src/modules/base/base.ts b/src/modules/base/base.ts index 8c682b8..59d8664 100644 --- a/src/modules/base/base.ts +++ b/src/modules/base/base.ts @@ -61,21 +61,17 @@ const onHelp = (_text: string, roomId: string) => { client.sendHtmlMessage( roomId, "", - `
Your Role: ${user.role}
-Your Money: ${user.money}
-Your AI Cost: ${user.aiCost}$
-Your Level: ${level.level}
- Next level progress: ${level.experienceInLevel}/${level.expToNextLevel}xp`, + `