-
Notifications
You must be signed in to change notification settings - Fork 5
feat: Add chat command for AI interaction and enhance message handlin… #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
ef17b2b
7f16a78
61268b3
9d0d6e8
6f5c055
cb81c38
8d8d5e3
2a00631
0cc84fc
21f0a5a
02f0401
401ace0
7ad6df3
d1f2fd1
5bea9b2
3cbfa63
d9369af
4bfc3be
38ee5bc
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| { | ||
| "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", | ||
| "dictionaries": ["software-terms", "npm", "fullstack", "redis"], | ||
| "files": ["**", ".vscode/**", ".github/**"], | ||
| "ignorePaths": ["bun.lock"], | ||
| "ignoreRegExpList": ["apiKey='[a-zA-Z0-9-]{32}'"], | ||
| "import": [ | ||
| "@cspell/dict-redis/cspell-ext.json", | ||
| "@cspell/dict-bash/cspell-ext.json" | ||
| ], | ||
| "useGitignore": true, | ||
| "version": "0.2", | ||
| "words": [ | ||
| "anirudh", | ||
| "sriram", | ||
| "Fellipe", | ||
| "Utaka", | ||
| "umami", | ||
| "assemblyai", | ||
| "bitstream", | ||
| "zenix", | ||
| "openrouter", | ||
| "elevenlabs", | ||
| "hackclub", | ||
| "deepgram", | ||
| "libsodium", | ||
| "livecrawl", | ||
| "grok", | ||
| "gork", | ||
| "dalle", | ||
| "dall", | ||
| "arcas", | ||
| "techwithanirudh" | ||
| ] | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,2 @@ | ||
| */.js | ||
| *.js | ||
| node_modules | ||
| *.json |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -6,20 +6,29 @@ | |||||||||||||||||||||||||||||
| "extends": [ | ||||||||||||||||||||||||||||||
| "eslint:recommended", | ||||||||||||||||||||||||||||||
| "plugin:@typescript-eslint/recommended", | ||||||||||||||||||||||||||||||
| "plugin:import-x/recommended", | ||||||||||||||||||||||||||||||
| "plugin:import-x/typescript", | ||||||||||||||||||||||||||||||
| "prettier" | ||||||||||||||||||||||||||||||
| ], | ||||||||||||||||||||||||||||||
| "plugins": ["@typescript-eslint"], | ||||||||||||||||||||||||||||||
| "plugins": ["@typescript-eslint", "import-x"], | ||||||||||||||||||||||||||||||
| "parser": "@typescript-eslint/parser", | ||||||||||||||||||||||||||||||
| "parserOptions": { | ||||||||||||||||||||||||||||||
| "ecmaVersion": "latest", | ||||||||||||||||||||||||||||||
| "sourceType": "module" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| "rules": { | ||||||||||||||||||||||||||||||
| "semi": ["warn", "always"], | ||||||||||||||||||||||||||||||
| "quotes": ["warn", "double"], | ||||||||||||||||||||||||||||||
| "arrow-parens": ["warn", "always"], | ||||||||||||||||||||||||||||||
| "no-unused-vars": "warn", | ||||||||||||||||||||||||||||||
| "no-console": "off", | ||||||||||||||||||||||||||||||
| "import/prefer-default-export": "off" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| "settings": { | ||||||||||||||||||||||||||||||
| "import/resolver": { | ||||||||||||||||||||||||||||||
| // You will also need to install and configure the TypeScript resolver | ||||||||||||||||||||||||||||||
| // See also https://github.com/import-js/eslint-import-resolver-typescript#configuration | ||||||||||||||||||||||||||||||
| "typescript": true, | ||||||||||||||||||||||||||||||
| "node": true | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
|
Comment on lines
+26
to
33
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. JSON comments break the ESLint config Plain Either:
- // You will also need to install and configure the TypeScript resolver
- // See also https://github.com/import-js/eslint-import-resolver-typescript#configuration
"typescript": true,
"node": true📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1 @@ | ||||||||
| * @techwithanirudh | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Add a trailing newline for POSIX-compliance Most linters/readers expect text files to end with a -* @techwithanirudh
+* @techwithanirudh
+📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| github: techwithanirudh | ||
| buy_me_a_coffee: techwithanirudh |
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,25 @@ | ||||||||||||||
| ### Description | ||||||||||||||
|
|
||||||||||||||
| <!-- Describe your changes in detail. What problem does this PR solve? --> | ||||||||||||||
|
Comment on lines
+1
to
+3
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Use an H1 heading to satisfy markdown-lint MD041 The first line should be a top-level heading ( -### Description
+# Description📝 Committable suggestion
Suggested change
🧰 Tools🪛 markdownlint-cli2 (0.17.2)1-1: First line in a file should be a top-level heading (MD041, first-line-heading, first-line-h1) 🤖 Prompt for AI Agents |
||||||||||||||
|
|
||||||||||||||
| ### Type of Change | ||||||||||||||
|
|
||||||||||||||
| <!-- Put an 'x' in all boxes that apply --> | ||||||||||||||
|
|
||||||||||||||
| - [ ] Bug fix (non-breaking change which fixes an issue) | ||||||||||||||
| - [ ] New feature (non-breaking change which adds functionality) | ||||||||||||||
| - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) | ||||||||||||||
| - [ ] Refactor (non-breaking change that doesn't fix a bug or add a feature) | ||||||||||||||
| - [ ] Documentation update | ||||||||||||||
|
|
||||||||||||||
| ### Pre-flight Checklist | ||||||||||||||
|
|
||||||||||||||
| <!-- Put an 'x' in all boxes that apply --> | ||||||||||||||
|
|
||||||||||||||
| - [ ] Changes are limited to a single feature, bugfix or chore (split larger changes into separate PRs) | ||||||||||||||
| - [ ] `bun check` without any issues | ||||||||||||||
| - [ ] I have reviewed [contributor guidelines](https://github.com/techwithanirudh/discord-ai-bot/blob/main/CONTRIBUTING.md) | ||||||||||||||
|
|
||||||||||||||
|
Comment on lines
+5
to
+22
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Checkbox sections lack default headings and may confuse contributors Consider adding short instructions above each checkbox block (e.g. “Select all that apply”) and collapsing redundant wording (“non-breaking change which” → “non-breaking change that”). Improves clarity and reduces line length. 🧰 Tools🪛 LanguageTool[style] ~9-~9: Consider using a different verb for a more formal wording. (FIX_RESOLVE) 🤖 Prompt for AI Agents |
||||||||||||||
| ### Additional Notes | ||||||||||||||
|
|
||||||||||||||
| <!-- Add any additional notes for reviewers --> | ||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| bun commitlint --edit $1 | ||
| bun check:spelling $1 | ||
|
Comment on lines
+1
to
+2
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Second command will not execute – use
bun commitlint --edit $1
-bun check:spelling $1
+bun run check:spelling $1🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1 @@ | ||||||||
| bun lint-staged | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Hard dependency on Bun may break contributor workflow Not every machine running the repo will have -bun lint-staged
+command -v bun >/dev/null 2>&1 && bun lint-staged || npx lint-staged📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||
This file was deleted.
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,17 +1,33 @@ | ||||||||||||||
| - Handle Message Interruptions | ||||||||||||||
| - Add Web Search using Exa | ||||||||||||||
| - Attachments Support | ||||||||||||||
| (final goal) - @gork / @zenix is it true? | ||||||||||||||
|
|
||||||||||||||
| Agent Isolation for each server, role based access control | ||||||||||||||
| mention that u need to install rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh | ||||||||||||||
|
|
||||||||||||||
| Put commands like join and leave as a subcommand under VC, make an easierway to have subcommands rather clubbing in one file | ||||||||||||||
| Stream back audio from ElevenLabs instead of non streaming | ||||||||||||||
| Switch to AI SDK Voice leater | ||||||||||||||
|
|
||||||||||||||
| seperate deepgram code into its seperate files | ||||||||||||||
| probably switch to 11 labs | ||||||||||||||
| Implement memory for the ai voic chat | ||||||||||||||
| Add commit lint | ||||||||||||||
| Allow people to customize zenix's speed in config | ||||||||||||||
| - Add Web Search using Exa (Done) | ||||||||||||||
| - Attachments Support (Done) | ||||||||||||||
| - (final goal) - @grok (gork) / @zenix is it true? | ||||||||||||||
|
|
||||||||||||||
| The Discord Agent Isolation for each server, full RBAC | ||||||||||||||
| Switch to ElevenLabs instead of deepgram voice as it's more realistic. | ||||||||||||||
|
|
||||||||||||||
| Separate Deepgram code into it's files | ||||||||||||||
| Implement Conversation history for Voice Chat, previous message memory + chat history. | ||||||||||||||
| Add Commit Lint to enforce strict commit messages, and add lint pipelines. | ||||||||||||||
|
Comment on lines
+9
to
+11
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Minor grammar: use possessive “its”
Should be “its”. -Separate Deepgram code into it's files
+Separate Deepgram code into its files📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[uncategorized] ~9-~9: Did you mean “its” (the possessive pronoun)? (ITS_PREMIUM) 🤖 Prompt for AI Agents |
||||||||||||||
| Allow People to Customize Zenix's Speed, and other settings in a /config command (per-server). | ||||||||||||||
| Refactor the channels command to be more easy to use, with deny and allow lists. | ||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Wording nit: “more easy” → “easier” -Refactor the channels command to be more easy to use
+Refactor the channels command to be easier to use📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[style] ~13-~13: The phrasing ‘more easy’ can sound awkward and informal. Consider using a comparative adjective or other alternative. (MORE_EASY_N_CLEAR) 🤖 Prompt for AI Agents |
||||||||||||||
|
|
||||||||||||||
| Detect when the user sent an unfinished sentence as a request and wait until they complete the response before replying fully, wait 1-2 seconds (for one user). This adds deduping | ||||||||||||||
|
|
||||||||||||||
| If a user interrupts it's replying, it will pause the current reply and reply to the other one with context. | ||||||||||||||
|
|
||||||||||||||
| Have a small dashboard UI to modify the bots settings | ||||||||||||||
| Add a slash chat command to chat with the AI on servers. | ||||||||||||||
| Figure out the issue if you join and close stream multiple DeepGram things are kept | ||||||||||||||
|
|
||||||||||||||
| When the user is typing increase the response speed by 0.5x. Also, use a different method for responding like a set WPM. | ||||||||||||||
|
|
||||||||||||||
| Add CI/CD testing so pushing things to production don't break stuff. | ||||||||||||||
|
|
||||||||||||||
| Add context to when the bot is triggered—for example, whether it’s due to a ping, a message, or some other interaction. | ||||||||||||||
|
|
||||||||||||||
| Switch from Mem0 (free, limited plan) to a more efficient memory system like Pinecone or another vector store. Implement a better memory workflow with both long-term and short-term memory. This way, the bot can retain conversation history, summarize previous messages, and maintain context over time. | ||||||||||||||
|
|
||||||||||||||
| Look into CrewAI or build your own custom memory system (a custom approach is likely more flexible). The goal is for Zenix to be more tightly integrated with both voice chat and text messages. | ||||||||||||||
|
|
||||||||||||||
| Zenix should have unified memory per user across all servers—not separate memories per server. That way, the bot always remembers the same person no matter where they interact with it. | ||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Regex for API keys is too specific
"[a-zA-Z0-9-]{32}"only matches 32-char keys. Many providers (OpenAI, Exa, etc.) use 40–48 chars. Consider increasing the range or adding provider-specific patterns so keys aren’t accidentally committed.🤖 Prompt for AI Agents