{"id":50850422,"url":"https://github.com/0x70b1a5/jeevespt","last_synced_at":"2026-06-14T13:32:49.836Z","repository":{"id":352541474,"uuid":"619829533","full_name":"0x70b1a5/jeevespt","owner":"0x70b1a5","description":"A sophisticated Discord bot powered by Claude (Anthropic) with multiple personas, voice capabilities, spaced-repetition learning, auto-translation, and more.","archived":false,"fork":false,"pushed_at":"2026-06-14T03:11:16.000Z","size":2174,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-06-14T13:32:47.028Z","etag":null,"topics":["chatbot","discord","education","llm","transcription","translation"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0x70b1a5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-27T14:03:43.000Z","updated_at":"2026-06-14T03:11:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/0x70b1a5/jeevespt","commit_stats":null,"previous_names":["0x70b1a5/jeevespt"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/0x70b1a5/jeevespt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x70b1a5%2Fjeevespt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x70b1a5%2Fjeevespt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x70b1a5%2Fjeevespt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x70b1a5%2Fjeevespt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0x70b1a5","download_url":"https://codeload.github.com/0x70b1a5/jeevespt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x70b1a5%2Fjeevespt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34323994,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatbot","discord","education","llm","transcription","translation"],"created_at":"2026-06-14T13:32:47.406Z","updated_at":"2026-06-14T13:32:49.831Z","avatar_url":"https://github.com/0x70b1a5.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JeevesPT - A general-purpose AI Discord bot\n\n![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue?logo=typescript)\n![Discord.js](https://img.shields.io/badge/discord.js-v14-5865F2?logo=discord\u0026logoColor=white)\n![Claude](https://img.shields.io/badge/Claude-Anthropic-d4a27f?logo=anthropic)\n![License](https://img.shields.io/badge/license-ISC-green)\n![Satisfaction](https://img.shields.io/badge/satisfaction-given,%20sir-success)\n\nA sophisticated Discord bot powered by Claude (Anthropic) with multiple personas, voice capabilities, spaced-repetition learning, auto-translation, and more.\n\nWith apologies to P. G. Wodehouse.\n\n## Features\n\n### Multi-Persona System\n- **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\n- **jan pona** — A toki pona-only speaker for language immersion\n- **Jargonatus** — A specialized persona with custom behavior\n- **Custom Prompts** — Define your own system prompt for fully customizable personalities\n\n### Voice Integration\n- **Speech-to-Text** — Transcribe audio messages using OpenAI Whisper\n- **Voice Commands** — Execute bot commands via voice (say \"command clear\" to run `!clear`)\n- **Text-to-Speech** — Optional voice responses via ElevenLabs (Jonathan Cecil voice for authentic Jeeves delivery)\n\n### Learning System\n- **Spaced Repetition** — Bot periodically quizzes you on configurable subjects (Latin, toki pona, music theory, etc.)\n- **Smart Scheduling** — Questions distributed throughout the day based on number of subjects\n- **Progress Tracking** — Persistent tracking of question history per subject\n\n### Auto-Translation\n- **Per-Channel Translation** — Automatically translate all messages in specified channels to a target language\n- **Per-User Translation** — Configure translations for specific users (supports multiple target languages per user)\n- **Skip Token** — Start messages with \"notr\" to bypass translation\n\n### Musing Mode\n- **Wikipedia Contemplation** — Bot periodically fetches random Wikipedia articles and shares thoughts\n- **URL Analysis** — Point the bot at any webpage for commentary\n- **Selenium-Powered** — Full JavaScript rendering for modern web pages\n\n### Reaction Mode\n- AI-driven contextual emoji reactions on messages in monitored channels\n\n### Reminders\n- Natural time parsing (`5m`, `2h`, `1d`)\n- Persistent across bot restarts\n- Personalized delivery messages matching the bot's current persona\n\n### Channel \u0026 Response Control\n- **Per-Channel Configuration** — Set response frequency per channel: respond to all messages, mentions only, or ignore entirely\n- **DM Support** — Full functionality in direct messages with separate configuration\n- **Message Batching** — Configurable delay to wait for multiple messages before responding\n\n### Technical\n- **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.\n- **Self-Documenting Help** — `!help` / `/help` generate a single categorized embed from command metadata; `!help \u003ccommand\u003e` shows usage, arguments, and examples. The listing can never drift from the actual commands.\n- **Multi-Model Support** — Switch between Claude models on the fly with validation\n- **Conversation Persistence** — Message history and configuration saved to disk\n- **Webhook Personas** — Each mode uses distinct bot name and avatar\n- **Graceful Shutdown** — State persistence and farewell messages on SIGINT\n\n## Setup\n\n1. Setup a Discord bot and get the token\n    - https://discord.com/developers/applications\n    - Create an application\n    - Create a bot\n    - Copy the token\n    - add token to .env file\n2. Install dependencies\n    - `npm install`\n3. Run the bot\n    - `npm start` or `npm run dev` (with logging)\n4. Invite the bot to your server with both the `bot` and `applications.commands` scopes (the latter is required for slash commands)\n    - 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)\n    - Slash commands are (re)registered automatically on startup from the same metadata that powers `!help`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0x70b1a5%2Fjeevespt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0x70b1a5%2Fjeevespt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0x70b1a5%2Fjeevespt/lists"}