https://github.com/0x70b1a5/jeevespt
A sophisticated Discord bot powered by Claude (Anthropic) with multiple personas, voice capabilities, spaced-repetition learning, auto-translation, and more.
https://github.com/0x70b1a5/jeevespt
chatbot discord education llm transcription translation
Last synced: 19 days ago
JSON representation
A sophisticated Discord bot powered by Claude (Anthropic) with multiple personas, voice capabilities, spaced-repetition learning, auto-translation, and more.
- Host: GitHub
- URL: https://github.com/0x70b1a5/jeevespt
- Owner: 0x70b1a5
- Created: 2023-03-27T14:03:43.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2026-06-14T03:11:16.000Z (19 days ago)
- Last Synced: 2026-06-14T13:32:47.028Z (19 days ago)
- Topics: chatbot, discord, education, llm, transcription, translation
- Language: TypeScript
- Homepage:
- Size: 2.07 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JeevesPT - A general-purpose AI Discord bot





A sophisticated Discord bot powered by Claude (Anthropic) with multiple personas, voice capabilities, spaced-repetition learning, auto-translation, and more.
With apologies to P. G. Wodehouse.
## Features
### Multi-Persona System
- **Jeeves** — A cultured butler modeled on P.G. Wodehouse's iconic character, dispensing advice with impeccable Queen's English and references to philosophy, literature, and Catholic theology
- **jan pona** — A toki pona-only speaker for language immersion
- **Jargonatus** — A specialized persona with custom behavior
- **Custom Prompts** — Define your own system prompt for fully customizable personalities
### Voice Integration
- **Speech-to-Text** — Transcribe audio messages using OpenAI Whisper
- **Voice Commands** — Execute bot commands via voice (say "command clear" to run `!clear`)
- **Text-to-Speech** — Optional voice responses via ElevenLabs (Jonathan Cecil voice for authentic Jeeves delivery)
### Learning System
- **Spaced Repetition** — Bot periodically quizzes you on configurable subjects (Latin, toki pona, music theory, etc.)
- **Smart Scheduling** — Questions distributed throughout the day based on number of subjects
- **Progress Tracking** — Persistent tracking of question history per subject
### Auto-Translation
- **Per-Channel Translation** — Automatically translate all messages in specified channels to a target language
- **Per-User Translation** — Configure translations for specific users (supports multiple target languages per user)
- **Skip Token** — Start messages with "notr" to bypass translation
### Musing Mode
- **Wikipedia Contemplation** — Bot periodically fetches random Wikipedia articles and shares thoughts
- **URL Analysis** — Point the bot at any webpage for commentary
- **Selenium-Powered** — Full JavaScript rendering for modern web pages
### Reaction Mode
- AI-driven contextual emoji reactions on messages in monitored channels
### Reminders
- Natural time parsing (`5m`, `2h`, `1d`)
- Persistent across bot restarts
- Personalized delivery messages matching the bot's current persona
### Channel & Response Control
- **Per-Channel Configuration** — Set response frequency per channel: respond to all messages, mentions only, or ignore entirely
- **DM Support** — Full functionality in direct messages with separate configuration
- **Message Batching** — Configurable delay to wait for multiple messages before responding
### Technical
- **Dual Command Interface** — Every command works both as `!prefix` text and as a native Discord slash command (registered via the API, with autocomplete and argument validation). Voice commands ("command clear") still drive the text path.
- **Self-Documenting Help** — `!help` / `/help` generate a single categorized embed from command metadata; `!help ` shows usage, arguments, and examples. The listing can never drift from the actual commands.
- **Multi-Model Support** — Switch between Claude models on the fly with validation
- **Conversation Persistence** — Message history and configuration saved to disk
- **Webhook Personas** — Each mode uses distinct bot name and avatar
- **Graceful Shutdown** — State persistence and farewell messages on SIGINT
## Setup
1. Setup a Discord bot and get the token
- https://discord.com/developers/applications
- Create an application
- Create a bot
- Copy the token
- add token to .env file
2. Install dependencies
- `npm install`
3. Run the bot
- `npm start` or `npm run dev` (with logging)
4. Invite the bot to your server with both the `bot` and `applications.commands` scopes (the latter is required for slash commands)
- Optionally set `DISCORD_GUILD_ID` in `.env` to register slash commands to that one guild instantly; otherwise they register globally (works in DMs and every guild, but the first sync can take up to an hour)
- Slash commands are (re)registered automatically on startup from the same metadata that powers `!help`