generator-discord 1.3.19 → 1.40.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -21,10 +21,15 @@ Generate a basic starter project for a new Discord-bot in your favorite programm
21
21
 
22
22
  ### Supported programming languages
23
23
 
24
- - TypeScript
25
- - JavaScript
26
- - Python
27
- - Rust
24
+ - TypeScript (discord.js 14)
25
+ - JavaScript (discord.js 14)
26
+ - Python (discord.py 2.7)
27
+ - Rust (serenity 0.12)
28
+
29
+ ### Requirements
30
+
31
+ - Node.js 22.18 or newer
32
+ - Python 3 and/or a Rust toolchain, if you generate those templates
28
33
 
29
34
  ### Your favorite is not listed?
30
35
 
@@ -50,10 +55,16 @@ npm install -g generator-discord
50
55
  yo discord
51
56
  ```
52
57
 
58
+ Add `--skip-install` to skip dependency installation and `--skip-build` to skip the initial build:
59
+
60
+ ```bash
61
+ yo discord --skip-install --skip-build
62
+ ```
63
+
53
64
  [![Example](https://github.com/emilkrebs/Generator-Discord/assets/68400102/aece1b93-b2dc-4c27-88ca-055836c8d322)](https://github.com/emilkrebs/Sound-Bot)
54
65
 
55
66
  ## Known Issues
56
67
 
57
68
  None
58
69
 
59
- [Add Issue](https://github.com/emilkrebs/Generator-Discord/issues/new)
70
+ [Add Issue](https://github.com/emilkrebs/Generator-Discord/issues/new)
package/app/index.d.ts CHANGED
@@ -8,7 +8,6 @@ interface Answers {
8
8
  }
9
9
  export default class DiscordGenerator extends Generator {
10
10
  private answers;
11
- constructor(args: string | string[], options: Record<string, unknown>);
12
11
  prompting(): Promise<void>;
13
12
  logo(): void;
14
13
  writing(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAazC,KAAK,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D,UAAU,OAAO;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACtB;AA6BD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAS;IACtD,OAAO,CAAC,OAAO,CAA0B;gBAE7B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI/D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDhC,IAAI,IAAI,IAAI;IAYZ,OAAO,IAAI,IAAI;IAsBT,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCxB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB1B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM;CAWjE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAazC,KAAK,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D,UAAU,OAAO;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACtB;AA6BD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAS;IACtD,OAAO,CAAC,OAAO,CAA0B;IAEnC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDhC,IAAI,IAAI,IAAI;IAYZ,OAAO,IAAI,IAAI;IAqBT,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BxB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB1B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM;CAWjE"}
package/app/index.js CHANGED
@@ -22,19 +22,16 @@ const botNameValidation = {
22
22
  errorMessage: 'Invalid bot name. Please use only letters, numbers, and underscores. Must start with a letter.'
23
23
  },
24
24
  rust: {
25
- regex: new RegExp('/^[a-z][a-z0-9_-]*$/'),
25
+ regex: new RegExp('^[a-z][a-z0-9_-]*$'),
26
26
  errorMessage: 'Invalid bot name. Please use only lowercase letters, numbers, underscores, and hyphens. Must start with a letter.'
27
27
  }
28
28
  };
29
29
  export default class DiscordGenerator extends Generator {
30
30
  answers = {};
31
- constructor(args, options) {
32
- super(args, options);
33
- }
34
31
  async prompting() {
35
32
  this.logo();
36
33
  const askBotType = await this.prompt({
37
- type: 'list',
34
+ type: 'select',
38
35
  name: 'botType',
39
36
  message: 'The type of Discord Bot you want to create.',
40
37
  choices: [
@@ -85,15 +82,18 @@ export default class DiscordGenerator extends Generator {
85
82
  this.log('\x1b[0m');
86
83
  }
87
84
  writing() {
88
- const paths = ['.'];
89
85
  this.sourceRoot(path.join(__dirname, TEMPLATE_DIR, this.answers.botType));
90
- // iterate over all files
91
- for (let i = 0, len = paths.length; i < len; i++) {
92
- const path = paths[i];
93
- this.fs.copy(this.templatePath(path), this.destinationPath(USER_DIR, this.answers.botName, path), {
94
- process: (content) => this._replaceWords(content, this.answers)
95
- });
96
- }
86
+ this.fs.copy(this.templatePath('.'), this.destinationPath(USER_DIR, this.answers.botName), {
87
+ fileTransform: ({ destinationPath, contents }) => {
88
+ const targetPath = path.basename(destinationPath) === '_gitignore'
89
+ ? path.join(path.dirname(destinationPath), '.gitignore')
90
+ : destinationPath;
91
+ return {
92
+ path: targetPath,
93
+ contents: this._replaceWords(contents, this.answers)
94
+ };
95
+ }
96
+ });
97
97
  }
98
98
  async install() {
99
99
  this.log('');
@@ -102,7 +102,7 @@ export default class DiscordGenerator extends Generator {
102
102
  const skipInstall = this.args.includes('skip-install');
103
103
  const options = { cwd: this.destinationPath(USER_DIR, this.answers.botName) };
104
104
  if (botType === 'typescript' || botType === 'javascript') {
105
- if (botType === 'typescript' || botType === 'javascript' && !skipInstall) {
105
+ if (!skipInstall) {
106
106
  this.log('Installing dependencies...');
107
107
  await this.spawn('npm', ['install'], options);
108
108
  }
@@ -119,7 +119,7 @@ export default class DiscordGenerator extends Generator {
119
119
  }
120
120
  async end() {
121
121
  const answer = await this.prompt({
122
- type: 'list',
122
+ type: 'select',
123
123
  name: 'openWithCode',
124
124
  message: 'Do you want to open your Discord Bot with \x1b[36mVisual Studio Code\x1b[0m?',
125
125
  choices: [
package/app/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "generator-discord",
3
3
  "displayName": "Generator-Discord",
4
- "version": "1.3.19",
4
+ "version": "1.40.1",
5
5
  "type": "module",
6
6
  "exports": "./app/index.js",
7
7
  "description": "Create a basic Discord-Bot, supporting many programming languages.",
8
8
  "engines": {
9
- "node": ">=16.0.0"
9
+ "node": "^22.18.0 || >=24.11.0"
10
10
  },
11
11
  "keywords": [
12
12
  "yeoman-generator",
@@ -18,8 +18,8 @@
18
18
  "build": "tsc",
19
19
  "watch": "tsc -w",
20
20
  "test": "npm run build && vitest run",
21
- "lint": "eslint src test --ext .ts",
22
- "lint:fix": "eslint src test --ext .ts --fix",
21
+ "lint": "eslint src test",
22
+ "lint:fix": "eslint src test --fix",
23
23
  "clean": "npx rimraf app && npx rimraf node_modules"
24
24
  },
25
25
  "files": [
@@ -39,18 +39,19 @@
39
39
  },
40
40
  "homepage": "https://github.com/emilkrebs/Generator-Discord",
41
41
  "dependencies": {
42
- "yeoman-generator": "^7.5.1"
42
+ "mem-fs": "^4.1.5",
43
+ "yeoman-generator": "^10.3.0"
43
44
  },
44
45
  "devDependencies": {
45
- "dotenv": "^17.2.1",
46
- "eslint": "^9.34.0",
47
- "typescript": "^5.9.2",
48
- "typescript-eslint": "^8.40.0",
49
- "vitest": "^3.2.4",
50
- "yeoman-environment": "^4.4.3",
51
- "yeoman-test": "^10.1.1"
52
- },
53
- "optionalDependencies": {
54
- "@rollup/rollup-linux-x64-gnu": "^4.48.1"
46
+ "@eslint/js": "^10.0.1",
47
+ "@types/node": "^26.6.6",
48
+ "eslint": "^10.13.0",
49
+ "globals": "^17.13.0",
50
+ "typescript": "^5.9.3",
51
+ "typescript-eslint": "^8.72.1",
52
+ "vite": "^8.3.5",
53
+ "vitest": "^5.0.5",
54
+ "yeoman-environment": "^8.5.1",
55
+ "yeoman-test": "^11.8.2"
55
56
  }
56
57
  }
package/src/index.ts CHANGED
@@ -40,7 +40,7 @@ const botNameValidation: Record<BotType, BotNameValidation> = {
40
40
  errorMessage: 'Invalid bot name. Please use only letters, numbers, and underscores. Must start with a letter.'
41
41
  },
42
42
  rust: {
43
- regex: new RegExp('/^[a-z][a-z0-9_-]*$/'),
43
+ regex: new RegExp('^[a-z][a-z0-9_-]*$'),
44
44
  errorMessage: 'Invalid bot name. Please use only lowercase letters, numbers, underscores, and hyphens. Must start with a letter.'
45
45
  }
46
46
  };
@@ -50,15 +50,11 @@ const botNameValidation: Record<BotType, BotNameValidation> = {
50
50
  export default class DiscordGenerator extends Generator {
51
51
  private answers: Answers = {} as Answers;
52
52
 
53
- constructor(args: string | string[], options: Record<string, unknown>) {
54
- super(args, options);
55
- }
56
-
57
53
  async prompting(): Promise<void> {
58
54
  this.logo();
59
55
 
60
56
  const askBotType = await this.prompt({
61
- type: 'list',
57
+ type: 'select',
62
58
  name: 'botType',
63
59
  message: 'The type of Discord Bot you want to create.',
64
60
  choices: [
@@ -115,25 +111,24 @@ export default class DiscordGenerator extends Generator {
115
111
  }
116
112
 
117
113
  writing(): void {
118
- const paths = ['.'];
119
-
120
114
  this.sourceRoot(path.join(__dirname, TEMPLATE_DIR, this.answers.botType));
121
115
 
122
- // iterate over all files
123
- for (let i = 0, len = paths.length; i < len; i++) {
124
- const path = paths[i];
125
- this.fs.copy(
126
- this.templatePath(path),
127
- this.destinationPath(
128
- USER_DIR,
129
- this.answers.botName,
130
- path
131
- ),
132
- {
133
- process: (content: string | Buffer) => this._replaceWords(content, this.answers)
116
+ this.fs.copy(
117
+ this.templatePath('.'),
118
+ this.destinationPath(USER_DIR, this.answers.botName),
119
+ {
120
+ fileTransform: ({ destinationPath, contents }) => {
121
+ const targetPath = path.basename(destinationPath) === '_gitignore'
122
+ ? path.join(path.dirname(destinationPath), '.gitignore')
123
+ : destinationPath;
124
+
125
+ return {
126
+ path: targetPath,
127
+ contents: this._replaceWords(contents, this.answers)
128
+ };
134
129
  }
135
- );
136
- }
130
+ }
131
+ );
137
132
  }
138
133
 
139
134
  async install(): Promise<void> {
@@ -146,14 +141,12 @@ export default class DiscordGenerator extends Generator {
146
141
  const options = { cwd: this.destinationPath(USER_DIR, this.answers.botName) };
147
142
 
148
143
  if (botType === 'typescript' || botType === 'javascript') {
149
-
150
-
151
- if(botType=== 'typescript' || botType === 'javascript' && !skipInstall) {
144
+ if (!skipInstall) {
152
145
  this.log('Installing dependencies...');
153
146
  await this.spawn('npm', ['install'], options);
154
147
  }
155
148
 
156
- if (botType=== 'typescript' && !skipBuild) {
149
+ if (botType === 'typescript' && !skipBuild) {
157
150
  this.log('Building your Discord Bot...');
158
151
  await this.spawn('npm', ['run', 'build'], options);
159
152
  }
@@ -171,7 +164,7 @@ export default class DiscordGenerator extends Generator {
171
164
 
172
165
  async end(): Promise<void> {
173
166
  const answer = await this.prompt({
174
- type: 'list',
167
+ type: 'select',
175
168
  name: 'openWithCode',
176
169
  message: 'Do you want to open your Discord Bot with \x1b[36mVisual Studio Code\x1b[0m?',
177
170
  choices: [
@@ -0,0 +1,4 @@
1
+ node_modules/
2
+ config.json
3
+ .env
4
+ *.log
@@ -4,10 +4,13 @@
4
4
  "description": "Please enter a brief description here",
5
5
  "version": "1.0.0",
6
6
  "main": "./src/index.js",
7
+ "engines": {
8
+ "node": ">=22"
9
+ },
7
10
  "scripts": {
8
11
  "start": "node ./src/index.js"
9
12
  },
10
13
  "dependencies": {
11
- "discord.js": "^14.22.1"
14
+ "discord.js": "^14.27.0"
12
15
  }
13
16
  }
@@ -1,4 +1,4 @@
1
- const { Client, GatewayIntentBits } = require('discord.js');
1
+ const { Client, Events, GatewayIntentBits } = require('discord.js');
2
2
  const { token } = require('../config.json');
3
3
 
4
4
  // Create a new client instance with Intents that specify which privileged intents your bot requires
@@ -6,8 +6,8 @@ const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBit
6
6
  const prefix = '!';
7
7
 
8
8
  // Run this code when the client is ready. This event will only trigger one time after logging in
9
- client.once('ready', () => {
10
- console.log(`Bot is logged in as ${client.user.tag}.`);
9
+ client.once(Events.ClientReady, readyClient => {
10
+ console.log(`Bot is logged in as ${readyClient.user.tag}.`);
11
11
  });
12
12
 
13
13
 
@@ -39,4 +39,4 @@ client.on('messageCreate', async message => {
39
39
  // Login to Discord with your app's token
40
40
  client.login(token);
41
41
 
42
- // For more information about the Discord.js library, visit https://discord.js.org/#/docs/main/stable/general/welcome∏
42
+ // For more information about the Discord.js library, visit https://discord.js.org/#/docs/main/stable/general/welcome
@@ -0,0 +1,4 @@
1
+ config.py
2
+ __pycache__/
3
+ *.pyc
4
+ .venv/
@@ -0,0 +1 @@
1
+ TOKEN = '<%= bot-token %>'
@@ -1 +1 @@
1
- discord.py ~= 2.6.2
1
+ discord.py ~= 2.7.1
@@ -6,5 +6,5 @@ edition = "2021"
6
6
  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
7
 
8
8
  [dependencies]
9
- serenity = { version = "0.12", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] }
9
+ serenity = { version = "0.12.5", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] }
10
10
  tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
@@ -0,0 +1 @@
1
+ target/
@@ -13,10 +13,13 @@ impl EventHandler for Handler {
13
13
 
14
14
  async fn message(&self, ctx: Context, msg: Message) {
15
15
  // check if the message starts with the prefix
16
- if msg.content.starts_with(&PREFIX) && !msg.author.bot {
16
+ if let Some(content) = msg.content.strip_prefix(PREFIX) {
17
+ if msg.author.bot {
18
+ return;
19
+ }
17
20
 
18
21
  // Split the message into command and arguments
19
- let args = msg.content[PREFIX.len()..].trim().split(' ').collect::<Vec<&str>>();
22
+ let args = content.trim().split(' ').collect::<Vec<&str>>();
20
23
  let command = args[0];
21
24
 
22
25
  // ping - bot will reply with Pong!
@@ -0,0 +1,5 @@
1
+ node_modules/
2
+ dist/
3
+ config.json
4
+ .env
5
+ *.log
@@ -3,14 +3,20 @@
3
3
  "displayName": "<%= bot-name %>",
4
4
  "description": "Please enter a brief description here",
5
5
  "version": "1.0.0",
6
- "main": "./src/index.ts",
6
+ "main": "./dist/src/index.js",
7
+ "engines": {
8
+ "node": ">=22"
9
+ },
7
10
  "scripts": {
8
- "start": "tsc && node ./dist/src/index.js",
11
+ "start": "npm run build && node ./dist/src/index.js",
9
12
  "watch": "tsc -w",
10
13
  "build": "tsc"
11
14
  },
12
15
  "dependencies": {
13
- "discord.js": "^14.22.1",
14
- "typescript": "^5.9.2"
16
+ "discord.js": "^14.27.0"
17
+ },
18
+ "devDependencies": {
19
+ "@types/node": "^26.6.6",
20
+ "typescript": "^7.0.2"
15
21
  }
16
22
  }
@@ -1,4 +1,4 @@
1
- import { Client, GatewayIntentBits } from 'discord.js';
1
+ import { Client, Events, GatewayIntentBits } from 'discord.js';
2
2
  import { token } from '../config.json';
3
3
 
4
4
  // Create a new client instance with Intents that specify which privileged intents your bot requires
@@ -6,27 +6,27 @@ const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBit
6
6
  const prefix = '!';
7
7
 
8
8
  // Run this code when the client is ready. This event will only trigger one time after logging in
9
- client.once('ready', () => {
10
- console.log(`Bot is logged in as ${client.user!.tag}.`);
9
+ client.once(Events.ClientReady, readyClient => {
10
+ console.log(`Bot is logged in as ${readyClient.user.tag}.`);
11
11
  });
12
12
 
13
13
 
14
14
  // Listen for messages
15
15
  client.on('messageCreate', async message => {
16
16
  // Ignore messages that don't start with the prefix or are from a bot
17
- if(!message.content.startsWith(prefix) || message.author.bot) return;
17
+ if (!message.content.startsWith(prefix) || message.author.bot) return;
18
18
 
19
19
  // Split the message into command and arguments
20
20
  const args = message.content.slice(prefix.length).trim().split(/ +/);
21
21
  const command = args.shift()?.toLowerCase();
22
-
22
+
23
23
  // ping - bot will reply with Pong!
24
- if(command === 'ping') {
24
+ if (command === 'ping') {
25
25
  await message.reply('Pong!');
26
26
  }
27
27
  // say <message> - bot will send the message
28
- else if(command === 'say') {
29
- if(!args.length) {
28
+ else if (command === 'say') {
29
+ if (!args.length) {
30
30
  await message.channel.send(`You didn't provide any arguments, ${message.author}!`);
31
31
  return;
32
32
  }
@@ -39,4 +39,4 @@ client.on('messageCreate', async message => {
39
39
  // Login to Discord with your app's token
40
40
  client.login(token);
41
41
 
42
- // For more information about the Discord.js library, visit https://discord.js.org/#/docs/main/stable/general/welcome∏
42
+ // For more information about the Discord.js library, visit https://discord.js.org/#/docs/main/stable/general/welcome
@@ -1,24 +1,25 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "ES6",
4
- "module": "commonjs",
3
+ "target": "ES2022",
4
+ "module": "node16",
5
+ "moduleResolution": "node16",
5
6
  "lib": ["ESNext"],
6
7
  "sourceMap": true,
7
8
  "outDir": "dist",
9
+ "rootDir": ".",
8
10
  "strict": true,
9
11
  "noUnusedLocals": true,
10
12
  "noImplicitReturns": true,
11
- "moduleResolution": "node",
12
13
  "esModuleInterop": true,
13
14
  "skipLibCheck": true,
14
15
  "resolveJsonModule": true,
15
16
  "forceConsistentCasingInFileNames": true
16
17
  },
17
18
  "include": [
18
- "src/**/*.ts",
19
+ "src/**/*.ts"
19
20
  ],
20
21
  "exclude": [
21
22
  "dist",
22
23
  "node_modules"
23
24
  ]
24
- }
25
+ }