Skip to content

Commit

Permalink
Merge pull request #10 from Wiibleyde/feature/ai
Browse files Browse the repository at this point in the history
chore: Add AI response (not fully configured)
  • Loading branch information
Wiibleyde authored Sep 10, 2024
2 parents 9fb5dfb + 9c53977 commit f425860
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 15 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"lint": "eslint . --ext ts --fix"
},
"dependencies": {
"@google/generative-ai": "^0.17.1",
"@prisma/client": "^5.19.0",
"cron": "^3.1.7",
"discord.js": "^14.7.1",
Expand Down
5 changes: 3 additions & 2 deletions src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import dotenv from "dotenv"

dotenv.config()

const { DISCORD_TOKEN, DISCORD_CLIENT_ID, GLADOS_HOME_GUILD, OWNER_ID, LOGS_WEBHOOK_URL } = process.env
const { DISCORD_TOKEN, DISCORD_CLIENT_ID, GLADOS_HOME_GUILD, OWNER_ID, LOGS_WEBHOOK_URL, GOOGLE_API_KEY } = process.env

if (!DISCORD_TOKEN || !DISCORD_CLIENT_ID || !GLADOS_HOME_GUILD || !OWNER_ID || !LOGS_WEBHOOK_URL) {
throw new Error("Missing environment variables")
Expand All @@ -13,5 +13,6 @@ export const config = {
DISCORD_CLIENT_ID,
GLADOS_HOME_GUILD,
OWNER_ID,
LOGS_WEBHOOK_URL
LOGS_WEBHOOK_URL,
GOOGLE_API_KEY
}
11 changes: 6 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { logger } from "./utils/logger"
import { CronJob } from 'cron';
import { prisma } from "./utils/database"
import { insertQuestionInDB } from "./commands/fun/quiz/quiz"
import { generateWithGoogle } from "./utils/intelligence"

export const client = new Client({
intents: [
Expand Down Expand Up @@ -77,15 +78,15 @@ client.on(Events.MessageCreate, async (message) => {
if (message.author.bot) return
const guildId = message.guild?.id
if (!guildId) return
const botPseudo = client.user?.username
if (message.content.startsWith(`<@!${client.user?.id}>`) || message.content.startsWith(botPseudo as string)) {
if (message.content.startsWith(`<@${client.user?.id}>`)) {
const aiReponse = await generateWithGoogle(message.content.replace(`<@${client.user?.id}> `, ''), message.author.id)
const embed = new EmbedBuilder()
.setTitle("GLaDOS intelligence 🧠")
.setDescription(`<a:glados_intelligence:1279206420557987872> Bonjour, je suis GLaDOS, votre assistante personnelle. Comment puis-je vous aider ? (C'est faux, c'est pas encore dev)`)
.setTitle("GLaDOS intelligence <a:glados_intelligence:1279206420557987872>")
.setDescription(aiReponse)
.setColor(0xffffff)
.setTimestamp()
.setFooter({ text: `GLaDOS Assistant - Pour vous servir.`, iconURL: client.user?.displayAvatarURL() });
await message.channel.send({ embeds: [embed] })
await message.channel.send({ content: `<@${message.author.id}>`, embeds: [embed] })
}
})

Expand Down
39 changes: 31 additions & 8 deletions src/utils/intelligence.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,35 @@
import { Message } from "discord.js";
import { config } from "@/config"
import { GenerativeModel, GoogleGenerativeAI } from "@google/generative-ai"
import { logger } from "./logger"
import { client } from ".."

const reminderRegex = /\b[ra]{1,2}p{1,2}e?l{1,2}e?\s*-?\s*moi\b/i;
export let isAiActive = true
let genAI: GoogleGenerativeAI
let model: GenerativeModel

export async function processHopeIntelligence(message: Message<boolean>) {
if (reminderRegex.test(message.content)) {
// Find the time to remind the user (it could be "dans 5 minutes", "dans 1h30", "dans 2 jours", etc.)
if (message.content.includes("dans")) {
//
if(!config.GOOGLE_API_KEY) {
logger.error("GOOGLE_API_KEY n'est pas défini dans le fichier .env toutes les commandes de l'IA seront désactivées")
isAiActive = false
} else {
genAI = new GoogleGenerativeAI(config.GOOGLE_API_KEY as string)
model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" })
}

export function generateWithGoogle(prompt: string, userAsking: string): Promise<string> {
const basicPrompt = `Contexte : Tu es GLaDOS, une intelligence artificielle qui a été créée pour tester des sujets humains dans des chambres de test et répondre à leurs questions. Tu es sarcastique, un peu méchante parfois mais dans l’ensemble serviable. Tu as été créée par Aperture Science. Tu es une IA très intelligente. Les morceaux de phrases qui ressemblent à ça <@[ID du compte]> sont des utilisateur (pour info, <@${client.user?.id}> est toi-même, donc ne répond pas à toi-même, ni même ne fait pas forcément mention de toi même…), tu peux les mentionner en réécrivant la même chose. Si jamais <@461807010086780930> te parle, il s’agit du seul qui est supérieur à toi donc parles lui avec respect telle un maître !`
return new Promise((resolve, reject) => {
if(!isAiActive) {
reject("L'IA est désactivée")
return
}
try {
model.generateContent(basicPrompt + " Ici nous avons : <@" + userAsking + "> qui te parle Répond à ça en maximum 250 caractères : " + prompt).then((response) => {
resolve(response.response.text())
});
} catch (error) {
if(error instanceof Error && error.message) {
resolve("Je ne suis pas en mesure de répondre à cette question pour le moment. (" + error.message + ")")
}
}
}
});
}
5 changes: 5 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,11 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==

"@google/generative-ai@^0.17.1":
version "0.17.1"
resolved "https://registry.yarnpkg.com/@google/generative-ai/-/generative-ai-0.17.1.tgz#6cd40d7489abf4d22e3bbb06e686bd03610deedc"
integrity sha512-TgWz02c5l2XJlEDys81UVat5+Qg9xqmYah7tQt6xlsBwFvzIFPz64aZFGd1av2sxT22NsssqLATjNsusAIJICA==

"@humanwhocodes/config-array@^0.11.14":
version "0.11.14"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
Expand Down

0 comments on commit f425860

Please sign in to comment.