Skip to content

Lets-Code-CZ/lofee-ai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lofee v2 (Discord bot)

Discord chatbot (long-running proces) postavený na Bun, Discord.js, Vercel AI SDK a Neon + Drizzle.

Požadavky

  • Bun (ověř: bun --version)
  • Discord aplikace s povoleným Message Content Intent (na Developer Portálu)
  • Neon Postgres databáze

Nastavení

  1. Vytvoř .env podle .env.example:
  • DISCORD_TOKEN: bot token
  • DISCORD_APP_ID: application id (client id)
  • OPENAI_API_KEY: OpenAI klíč
  • OPENAI_MODEL: model pro odpovědi (výchozí gpt-4o-mini; pro analýzu obrázků z Discord příloh potřebuješ vision model, např. gpt-4o / gpt-4o-mini)
  • OPENAI_MEMORY_MODEL: volitelně jiný model pro extrakci faktů (jinak stejný jako OPENAI_MODEL)
  • OPENAI_REASONING_EFFORT: volitelně pro reasoning modely (none | minimal | low | medium | high | xhigh). U běžných modelů (gpt-4o-mini atd.) proměnnou nepiš — u reasoning modelů ji nastav podle OpenAI dokumentace (none / xhigh jen u vybraných modelů)
  • DATABASE_URL: Neon connection string
  • LOFEE_CHANNEL_ID: ID kanálu, ve kterém bot odpovídá (v odpovědích podporuje i vlákna pod tímto kanálem)

System prompt se načítá z Markdown souboru prompts/system.md. Volitelně můžeš nastavit LOFEE_SYSTEM_PROMPT_PATH (cesta k jinému .md) nebo LOFEE_SYSTEM_PROMPT jako prosté textové přepsání s nejvyšší prioritou.

  • Plný vs. kompaktní prompt: env LOFEE_FULL_SYSTEM_EVERY_N (výchozí 1) určuje, jak často se globálně (jedno počítadlo pro celý bot – všichni uživatelé a kanály dohromady) pošle celý obsah system.md. Mezi tím se použije kratší prompts/system-compact.md (nebo LOFEE_SYSTEM_COMPACT_PROMPT_PATH). Příklad: LOFEE_FULL_SYSTEM_EVERY_N=5 → plný prompt u 1., 5., 10., 15. … zprávy celkově od začátku sledování v DB. Po nasazení změny schématu spusť bun run db:push; migrace ze staré tabulky conversation_prompt_state může vyžadovat ruční DROP, pokud ji už máš v Neonu.
  1. Nainstaluj závislosti:
bun install

Databáze (Drizzle)

Schéma je v src/db/schema.ts, konfigurace Drizzle Kit v drizzle.config.ts.

  • Push schématu:
bun run db:push

Po přidání sloupce image_urls u tabulky messages je potřeba db:push znovu spustit na aktuální Neon DB.

Tabulka messages používá sloupec discord_message_id (unikátní) — zabraňuje dvojímu uložení při duplicitním messageCreate ve stejném procesu. Po přidání sloupce znovu bun run db:push. Pokud ti pořád chodí dvě odpovědi v kanálu, zkontroluj, že nepouštíš bota ve dvou terminálech se stejným tokenem.

  • Studio:
bun run db:studio

Slash příkazy

Globální deploy slash příkazů (může trvat pár minut, než se projeví):

bun run commands:deploy

Příkazy:

  • /memory on
  • /memory off
  • /memory clear
  • /memory status
  • /memory facts — jen pro tebe (ephemeral) embed s uloženými fakty

Spuštění bota

bun run dev

Logika chování

  • Bot odpovídá jen v kanálu LOFEE_CHANNEL_ID (a ve vláknech, která jsou pod tímto kanálem).
  • Zprávy začínající tečkou . ignoruje.
  • Kontext pro LLM bere z posledních 20 zpráv v DB pro daný kanál/vlákno.
  • Paměť:
    • Po zprávě uživatele vyhodnotí „fakt“ s score 0–1.
    • Uloží jen pokud score > 0.9.
    • Drží max 20 faktů na uživatele.
    • Lze vypnout / vymazat přes slash příkazy.

About

Upgradovaný AI chatbot pro Let's Study s novými prvky a lepšími konverzacemi.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors