Vica é um bot para Discord que unifica funcionalidades de chatbot via API da OpenAI (modo IA) e comando de perguntas aleatórias de um banco local (modo banco). Desenvolvido em Node.js para rodar em Raspberry Pi.
- Node.js (versão 16 ou superior recomendada)
- Acesso a um bot registrado no Discord (token e client ID)
- Chave de API compatível com Responses API (ou OpenAI Chat Completions)
- SQLite3 instalado (para banco de dados local)
- Clone o repositório
git clone https://github.com/seuusuario/vica.git
cd vica- Instale as dependências
npm install- Crie o arquivo
config.jsonna raiz do projeto com a estrutura:
{
"discord": {
"token": "SEU_DISCORD_BOT_TOKEN",
"clientId": "SEU_CLIENT_ID"
},
"openai": {
"base_url": "https://sua.api.openai.compativel/responses",
"api_key": "SUA_CHAVE_API",
"model": "gpt-4o",
"model_embeddings": "text-embedding-3-small",
"retries": 3,
"initial_delay_ms": 1000,
"sendSystemPrompt": true
},
"settings": {
"historyLimit": 6,
"maxTokens": 500,
"rate_limit_ms": 5000
}
}-
Adicione perguntas no arquivo
data/perguntas.txt(uma por linha) -
Registre os comandos slash no Discord
node deploy-commands.js- Inicie o bot
node bot.jsbot.js- arquivo principal que inicializa o botcommands/- comandos slash do bot (ex:/perguntar)core/- lógica de comunicação com a API e manipulação de contextodata/- banco de perguntas (perguntas.txt) e banco SQLite (database.db)events/- listeners de eventos Discordutils/- funções auxiliaresconfig.json- configurações do bot e API (não deve ser versionado).gitignore- arquivos e pastas ignorados pelo git
- Chatbot com IA: Responde a menções e replies utilizando modelos compatíveis com OpenAI, com suporte a contexto de conversação.
- Sistema de Níveis (XP): Ganho de XP por mensagens, com ranking e mensagens de level up configuráveis.
- Memória de Longo Prazo: Armazena fatos sobre usuários e o servidor para personalizar interações futuras (via embeddings e busca semântica).
- Configuração via Discord: Painel interativo (
/config) para gerenciar canais, mensagens de boas-vindas, e outras configurações sem reiniciar o bot. - Blacklists: Comandos para impedir o chatbot (
/chat_blacklist) ou o sistema de XP (/rank_blacklist) de funcionar em canais específicos. - Multimodalidade: Suporte a envio de imagens para análise pela IA.
Vica usa tags especiais para armazenar e sinalizar contexto:
[salvar_memoria]...[/salvar_memoria]: salva um fato no banco comimportance(1–10) econfidence(0.0–1.0).[meta]...[/meta]: bloco de metadados inline.[imagem]: sinaliza que a mensagem possui imagem anexada.
Exemplos:
[salvar_memoria]{GUILD_ID}:123456789012345678:curte animes:8:0.9[/salvar_memoria][meta]user:João|id:123[/meta][imagem] Texto com imagem.
As tags são parseadas por core/tagParser.js e consumidas nas respostas da IA por core/oai_interface.js. Placeholders como {GUILD_ID} são substituídos automaticamente conforme o contexto.
- Refinamento da "personalidade" através de prompt engineering contínuo.
- Melhorias na performance de busca de memórias (embeddings).