├── .gitignore ├── README.md ├── bot_discordchatbot.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | auth.json 106 | TestBot.txt 107 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Discord-Bot 2 | 3 | ``` 4 | npm install 5 | ``` 6 | 7 | ``` 8 | node bot.js 9 | ``` 10 | -------------------------------------------------------------------------------- /bot_discordchatbot.js: -------------------------------------------------------------------------------- 1 | import { createRequire } from 'module' 2 | const require = createRequire(import.meta.url) 3 | const axios = require('axios'); 4 | const openai = require('openai'); 5 | require('dotenv').config(); 6 | const Discord = require('discord.js'); 7 | const client = new Discord.Client({ 8 | intents: [Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES] 9 | }); 10 | 11 | const prompt = "Hello, I'm a chatbot. What would you like to talk about?"; 12 | const chatbotParams = { 13 | temperature: 0.7, 14 | maxTokens: 3000, 15 | topP: 1, 16 | frequencyPenalty: 0.7, 17 | presencePenalty: 0 18 | }; 19 | 20 | // Define a function to generate a response from the ChatGPT model 21 | async function generateResponse(prompt, chatbotParams) { 22 | const response = await axios({ 23 | method: 'post', 24 | //url: 'https://api.openai.com/v1/engines/text-davinci-003/completions', 25 | url: 'https://api.openai.com/v1/engines/text-davinci-003/completions', 26 | headers: { 27 | 'Content-Type': 'application/json', 28 | 'Authorization': `Bearer ${process.env.OPENAI_API_KEY}` 29 | }, 30 | data: { 31 | prompt: prompt, 32 | temperature: chatbotParams.temperature, 33 | max_tokens: chatbotParams.maxTokens, 34 | top_p: chatbotParams.topP, 35 | frequency_penalty: chatbotParams.frequencyPenalty, 36 | presence_penalty: chatbotParams.presencePenalty, 37 | n : 1 38 | } 39 | }); 40 | 41 | let reply = response.data.choices[0].text.trim(); 42 | return reply; 43 | } 44 | 45 | client.on('ready', () => { 46 | console.log('I am ready!'); 47 | }); 48 | 49 | client.on('messageCreate', async (message) => { 50 | let messageContent = message.content; 51 | messageContent = messageContent.substring(0,8); 52 | if (message.content === '/start') { 53 | const responseText = "👋Hello there!\n\n" 54 | + "You can chat with this bot, using [AiHey](https://aihey.co)\n\n" 55 | + "**Example:** Send a message like\n" 56 | + "*/heychat I'd like to know about you*\n\n" 57 | + "Enjoy! 💖 #AiHey"; 58 | await message.reply(responseText); 59 | } else if (message.content === '/help') { 60 | const responseText = "Send a message like\n" 61 | + "*/heychat I'd like to know about you*\n\n" 62 | + "to chat with this bot." 63 | await message.reply(responseText); 64 | } else if (messageContent === '/heychat') { 65 | console.log(message); 66 | let userText = message.content.replace("/heychat", ""); 67 | userText = userText.replace("\n", "."); 68 | let promptText = prompt + "\nUser: " + userText; 69 | const chatbotResponse = await generateResponse(promptText, chatbotParams); 70 | await message.reply(chatbotResponse,); 71 | } 72 | else if (message.content.length > 0 && message.author.username != 'MagicBot'){ 73 | const responseText = "👋Hello there!\n\n" 74 | + "You can chat with this bot, using [AiHey](https://aihey.co)\n\n" 75 | + "**Example:** Send a message like\n" 76 | + "*/heychat I'd like to know about you*\n\n" 77 | + "Enjoy! 💖 #AiHey" 78 | await message.reply(responseText); 79 | } 80 | }); 81 | 82 | client.login(process.env.DISCORD_TOKEN); 83 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Discord-Bot", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "dependencies": { 9 | "axios": "^1.3.3", 10 | "discord.js": "^13.6.0", 11 | "dotenv": "^16.0.3", 12 | "openai": "^3.2.1", 13 | "start": "^5.1.0" 14 | } 15 | }, 16 | "node_modules/@discordjs/builders": { 17 | "version": "0.16.0", 18 | "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.16.0.tgz", 19 | "integrity": "sha512-9/NCiZrLivgRub2/kBc0Vm5pMBE5AUdYbdXsLu/yg9ANgvnaJ0bZKTY8yYnLbsEc/LYUP79lEIdC73qEYhWq7A==", 20 | "deprecated": "no longer supported", 21 | "dependencies": { 22 | "@sapphire/shapeshift": "^3.5.1", 23 | "discord-api-types": "^0.36.2", 24 | "fast-deep-equal": "^3.1.3", 25 | "ts-mixer": "^6.0.1", 26 | "tslib": "^2.4.0" 27 | }, 28 | "engines": { 29 | "node": ">=16.9.0" 30 | } 31 | }, 32 | "node_modules/@discordjs/builders/node_modules/discord-api-types": { 33 | "version": "0.36.3", 34 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", 35 | "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" 36 | }, 37 | "node_modules/@discordjs/collection": { 38 | "version": "0.7.0", 39 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", 40 | "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", 41 | "deprecated": "no longer supported", 42 | "engines": { 43 | "node": ">=16.9.0" 44 | } 45 | }, 46 | "node_modules/@sapphire/async-queue": { 47 | "version": "1.5.0", 48 | "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", 49 | "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", 50 | "engines": { 51 | "node": ">=v14.0.0", 52 | "npm": ">=7.0.0" 53 | } 54 | }, 55 | "node_modules/@sapphire/shapeshift": { 56 | "version": "3.8.1", 57 | "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz", 58 | "integrity": "sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw==", 59 | "dependencies": { 60 | "fast-deep-equal": "^3.1.3", 61 | "lodash": "^4.17.21" 62 | }, 63 | "engines": { 64 | "node": ">=v14.0.0", 65 | "npm": ">=7.0.0" 66 | } 67 | }, 68 | "node_modules/@types/node": { 69 | "version": "18.14.6", 70 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", 71 | "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==" 72 | }, 73 | "node_modules/@types/node-fetch": { 74 | "version": "2.6.2", 75 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", 76 | "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", 77 | "dependencies": { 78 | "@types/node": "*", 79 | "form-data": "^3.0.0" 80 | } 81 | }, 82 | "node_modules/@types/node-fetch/node_modules/form-data": { 83 | "version": "3.0.1", 84 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", 85 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", 86 | "dependencies": { 87 | "asynckit": "^0.4.0", 88 | "combined-stream": "^1.0.8", 89 | "mime-types": "^2.1.12" 90 | }, 91 | "engines": { 92 | "node": ">= 6" 93 | } 94 | }, 95 | "node_modules/@types/ws": { 96 | "version": "8.5.4", 97 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", 98 | "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", 99 | "dependencies": { 100 | "@types/node": "*" 101 | } 102 | }, 103 | "node_modules/asynckit": { 104 | "version": "0.4.0", 105 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 106 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 107 | }, 108 | "node_modules/axios": { 109 | "version": "1.3.4", 110 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", 111 | "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", 112 | "dependencies": { 113 | "follow-redirects": "^1.15.0", 114 | "form-data": "^4.0.0", 115 | "proxy-from-env": "^1.1.0" 116 | } 117 | }, 118 | "node_modules/combined-stream": { 119 | "version": "1.0.8", 120 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 121 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 122 | "dependencies": { 123 | "delayed-stream": "~1.0.0" 124 | }, 125 | "engines": { 126 | "node": ">= 0.8" 127 | } 128 | }, 129 | "node_modules/delayed-stream": { 130 | "version": "1.0.0", 131 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 132 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 133 | "engines": { 134 | "node": ">=0.4.0" 135 | } 136 | }, 137 | "node_modules/discord-api-types": { 138 | "version": "0.33.5", 139 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", 140 | "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" 141 | }, 142 | "node_modules/discord.js": { 143 | "version": "13.13.1", 144 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.13.1.tgz", 145 | "integrity": "sha512-4QdeSIGOIeZ25cTOxaPdVqIXz8tN56DetXFAwEkDHX5sDqbsXm9gMaNhfaOwMap3d5mgdC7I78g70I82x5i5lw==", 146 | "dependencies": { 147 | "@discordjs/builders": "^0.16.0", 148 | "@discordjs/collection": "^0.7.0", 149 | "@sapphire/async-queue": "^1.5.0", 150 | "@types/node-fetch": "^2.6.2", 151 | "@types/ws": "^8.5.3", 152 | "discord-api-types": "^0.33.5", 153 | "form-data": "^4.0.0", 154 | "node-fetch": "^2.6.7", 155 | "ws": "^8.9.0" 156 | }, 157 | "engines": { 158 | "node": ">=16.6.0", 159 | "npm": ">=7.0.0" 160 | } 161 | }, 162 | "node_modules/dotenv": { 163 | "version": "16.0.3", 164 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", 165 | "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", 166 | "engines": { 167 | "node": ">=12" 168 | } 169 | }, 170 | "node_modules/fast-deep-equal": { 171 | "version": "3.1.3", 172 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 173 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 174 | }, 175 | "node_modules/follow-redirects": { 176 | "version": "1.15.2", 177 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 178 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 179 | "funding": [ 180 | { 181 | "type": "individual", 182 | "url": "https://github.com/sponsors/RubenVerborgh" 183 | } 184 | ], 185 | "engines": { 186 | "node": ">=4.0" 187 | }, 188 | "peerDependenciesMeta": { 189 | "debug": { 190 | "optional": true 191 | } 192 | } 193 | }, 194 | "node_modules/form-data": { 195 | "version": "4.0.0", 196 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 197 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 198 | "dependencies": { 199 | "asynckit": "^0.4.0", 200 | "combined-stream": "^1.0.8", 201 | "mime-types": "^2.1.12" 202 | }, 203 | "engines": { 204 | "node": ">= 6" 205 | } 206 | }, 207 | "node_modules/lodash": { 208 | "version": "4.17.21", 209 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 210 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 211 | }, 212 | "node_modules/mime-db": { 213 | "version": "1.52.0", 214 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 215 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 216 | "engines": { 217 | "node": ">= 0.6" 218 | } 219 | }, 220 | "node_modules/mime-types": { 221 | "version": "2.1.35", 222 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 223 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 224 | "dependencies": { 225 | "mime-db": "1.52.0" 226 | }, 227 | "engines": { 228 | "node": ">= 0.6" 229 | } 230 | }, 231 | "node_modules/node-fetch": { 232 | "version": "2.6.9", 233 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", 234 | "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", 235 | "dependencies": { 236 | "whatwg-url": "^5.0.0" 237 | }, 238 | "engines": { 239 | "node": "4.x || >=6.0.0" 240 | }, 241 | "peerDependencies": { 242 | "encoding": "^0.1.0" 243 | }, 244 | "peerDependenciesMeta": { 245 | "encoding": { 246 | "optional": true 247 | } 248 | } 249 | }, 250 | "node_modules/openai": { 251 | "version": "3.2.1", 252 | "resolved": "https://registry.npmjs.org/openai/-/openai-3.2.1.tgz", 253 | "integrity": "sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==", 254 | "dependencies": { 255 | "axios": "^0.26.0", 256 | "form-data": "^4.0.0" 257 | } 258 | }, 259 | "node_modules/openai/node_modules/axios": { 260 | "version": "0.26.1", 261 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", 262 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", 263 | "dependencies": { 264 | "follow-redirects": "^1.14.8" 265 | } 266 | }, 267 | "node_modules/proxy-from-env": { 268 | "version": "1.1.0", 269 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 270 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 271 | }, 272 | "node_modules/start": { 273 | "version": "5.1.0", 274 | "resolved": "https://registry.npmjs.org/start/-/start-5.1.0.tgz", 275 | "integrity": "sha512-lirwWQmvBC65bnxU3HzKx5m7vfZJZTx/FrKyPWbtobcvujGbinQQRrNodtcgkp4mTZ00umzDeg7lraN351l0aA==", 276 | "deprecated": "Deprecated in favor of https://github.com/deepsweet/start", 277 | "engines": { 278 | "node": ">=4" 279 | } 280 | }, 281 | "node_modules/tr46": { 282 | "version": "0.0.3", 283 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 284 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 285 | }, 286 | "node_modules/ts-mixer": { 287 | "version": "6.0.3", 288 | "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", 289 | "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==" 290 | }, 291 | "node_modules/tslib": { 292 | "version": "2.5.0", 293 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 294 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" 295 | }, 296 | "node_modules/webidl-conversions": { 297 | "version": "3.0.1", 298 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 299 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 300 | }, 301 | "node_modules/whatwg-url": { 302 | "version": "5.0.0", 303 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 304 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 305 | "dependencies": { 306 | "tr46": "~0.0.3", 307 | "webidl-conversions": "^3.0.0" 308 | } 309 | }, 310 | "node_modules/ws": { 311 | "version": "8.12.1", 312 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", 313 | "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", 314 | "engines": { 315 | "node": ">=10.0.0" 316 | }, 317 | "peerDependencies": { 318 | "bufferutil": "^4.0.1", 319 | "utf-8-validate": ">=5.0.2" 320 | }, 321 | "peerDependenciesMeta": { 322 | "bufferutil": { 323 | "optional": true 324 | }, 325 | "utf-8-validate": { 326 | "optional": true 327 | } 328 | } 329 | } 330 | }, 331 | "dependencies": { 332 | "@discordjs/builders": { 333 | "version": "0.16.0", 334 | "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.16.0.tgz", 335 | "integrity": "sha512-9/NCiZrLivgRub2/kBc0Vm5pMBE5AUdYbdXsLu/yg9ANgvnaJ0bZKTY8yYnLbsEc/LYUP79lEIdC73qEYhWq7A==", 336 | "requires": { 337 | "@sapphire/shapeshift": "^3.5.1", 338 | "discord-api-types": "^0.36.2", 339 | "fast-deep-equal": "^3.1.3", 340 | "ts-mixer": "^6.0.1", 341 | "tslib": "^2.4.0" 342 | }, 343 | "dependencies": { 344 | "discord-api-types": { 345 | "version": "0.36.3", 346 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", 347 | "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" 348 | } 349 | } 350 | }, 351 | "@discordjs/collection": { 352 | "version": "0.7.0", 353 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", 354 | "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==" 355 | }, 356 | "@sapphire/async-queue": { 357 | "version": "1.5.0", 358 | "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", 359 | "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==" 360 | }, 361 | "@sapphire/shapeshift": { 362 | "version": "3.8.1", 363 | "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz", 364 | "integrity": "sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw==", 365 | "requires": { 366 | "fast-deep-equal": "^3.1.3", 367 | "lodash": "^4.17.21" 368 | } 369 | }, 370 | "@types/node": { 371 | "version": "18.14.6", 372 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", 373 | "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==" 374 | }, 375 | "@types/node-fetch": { 376 | "version": "2.6.2", 377 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", 378 | "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", 379 | "requires": { 380 | "@types/node": "*", 381 | "form-data": "^3.0.0" 382 | }, 383 | "dependencies": { 384 | "form-data": { 385 | "version": "3.0.1", 386 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", 387 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", 388 | "requires": { 389 | "asynckit": "^0.4.0", 390 | "combined-stream": "^1.0.8", 391 | "mime-types": "^2.1.12" 392 | } 393 | } 394 | } 395 | }, 396 | "@types/ws": { 397 | "version": "8.5.4", 398 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", 399 | "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", 400 | "requires": { 401 | "@types/node": "*" 402 | } 403 | }, 404 | "asynckit": { 405 | "version": "0.4.0", 406 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 407 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 408 | }, 409 | "axios": { 410 | "version": "1.3.4", 411 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", 412 | "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", 413 | "requires": { 414 | "follow-redirects": "^1.15.0", 415 | "form-data": "^4.0.0", 416 | "proxy-from-env": "^1.1.0" 417 | } 418 | }, 419 | "combined-stream": { 420 | "version": "1.0.8", 421 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 422 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 423 | "requires": { 424 | "delayed-stream": "~1.0.0" 425 | } 426 | }, 427 | "delayed-stream": { 428 | "version": "1.0.0", 429 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 430 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 431 | }, 432 | "discord-api-types": { 433 | "version": "0.33.5", 434 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", 435 | "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" 436 | }, 437 | "discord.js": { 438 | "version": "13.13.1", 439 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.13.1.tgz", 440 | "integrity": "sha512-4QdeSIGOIeZ25cTOxaPdVqIXz8tN56DetXFAwEkDHX5sDqbsXm9gMaNhfaOwMap3d5mgdC7I78g70I82x5i5lw==", 441 | "requires": { 442 | "@discordjs/builders": "^0.16.0", 443 | "@discordjs/collection": "^0.7.0", 444 | "@sapphire/async-queue": "^1.5.0", 445 | "@types/node-fetch": "^2.6.2", 446 | "@types/ws": "^8.5.3", 447 | "discord-api-types": "^0.33.5", 448 | "form-data": "^4.0.0", 449 | "node-fetch": "^2.6.7", 450 | "ws": "^8.9.0" 451 | } 452 | }, 453 | "dotenv": { 454 | "version": "16.0.3", 455 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", 456 | "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" 457 | }, 458 | "fast-deep-equal": { 459 | "version": "3.1.3", 460 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 461 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 462 | }, 463 | "follow-redirects": { 464 | "version": "1.15.2", 465 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 466 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 467 | }, 468 | "form-data": { 469 | "version": "4.0.0", 470 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 471 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 472 | "requires": { 473 | "asynckit": "^0.4.0", 474 | "combined-stream": "^1.0.8", 475 | "mime-types": "^2.1.12" 476 | } 477 | }, 478 | "lodash": { 479 | "version": "4.17.21", 480 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 481 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 482 | }, 483 | "mime-db": { 484 | "version": "1.52.0", 485 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 486 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 487 | }, 488 | "mime-types": { 489 | "version": "2.1.35", 490 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 491 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 492 | "requires": { 493 | "mime-db": "1.52.0" 494 | } 495 | }, 496 | "node-fetch": { 497 | "version": "2.6.9", 498 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", 499 | "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", 500 | "requires": { 501 | "whatwg-url": "^5.0.0" 502 | } 503 | }, 504 | "openai": { 505 | "version": "3.2.1", 506 | "resolved": "https://registry.npmjs.org/openai/-/openai-3.2.1.tgz", 507 | "integrity": "sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==", 508 | "requires": { 509 | "axios": "^0.26.0", 510 | "form-data": "^4.0.0" 511 | }, 512 | "dependencies": { 513 | "axios": { 514 | "version": "0.26.1", 515 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", 516 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", 517 | "requires": { 518 | "follow-redirects": "^1.14.8" 519 | } 520 | } 521 | } 522 | }, 523 | "proxy-from-env": { 524 | "version": "1.1.0", 525 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 526 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 527 | }, 528 | "start": { 529 | "version": "5.1.0", 530 | "resolved": "https://registry.npmjs.org/start/-/start-5.1.0.tgz", 531 | "integrity": "sha512-lirwWQmvBC65bnxU3HzKx5m7vfZJZTx/FrKyPWbtobcvujGbinQQRrNodtcgkp4mTZ00umzDeg7lraN351l0aA==" 532 | }, 533 | "tr46": { 534 | "version": "0.0.3", 535 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 536 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 537 | }, 538 | "ts-mixer": { 539 | "version": "6.0.3", 540 | "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", 541 | "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==" 542 | }, 543 | "tslib": { 544 | "version": "2.5.0", 545 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 546 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" 547 | }, 548 | "webidl-conversions": { 549 | "version": "3.0.1", 550 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 551 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 552 | }, 553 | "whatwg-url": { 554 | "version": "5.0.0", 555 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 556 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 557 | "requires": { 558 | "tr46": "~0.0.3", 559 | "webidl-conversions": "^3.0.0" 560 | } 561 | }, 562 | "ws": { 563 | "version": "8.12.1", 564 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", 565 | "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", 566 | "requires": {} 567 | } 568 | } 569 | } 570 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "start": "node bot_discordchatbot.js" 5 | }, 6 | "dependencies": { 7 | "axios": "^1.3.3", 8 | "discord.js": "^13.6.0", 9 | "dotenv": "^16.0.3", 10 | "openai": "^3.2.1", 11 | "start": "^5.1.0" 12 | } 13 | } --------------------------------------------------------------------------------