generator-discord 1.2.2 → 1.2.4

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
@@ -19,6 +19,17 @@
19
19
 
20
20
  <hr>
21
21
 
22
+ Generate a basic starter project for a new Discord-bot in your favorite programming language.
23
+
24
+ ### Supported programming languages
25
+ - TypeScript
26
+ - JavaScript
27
+ - Python
28
+ - Rust
29
+
30
+ ### Your favorite is not listed?
31
+
32
+ [Request template](https://github.com/emilkrebs/Generator-Discord/issues/new?assignees=&labels=template&projects=&template=template-request.md&title=Template+Request%3A+)
22
33
 
23
34
  # Installing the Generator
24
35
 
package/app/index.d.ts CHANGED
@@ -1,4 +1,12 @@
1
+ /// <reference types="node" />
1
2
  import Generator from 'yeoman-generator';
3
+ type BotType = 'typescript' | 'javascript' | 'python' | 'rust';
4
+ interface Answers {
5
+ botName: string;
6
+ botType: BotType;
7
+ botToken: string;
8
+ openWithCode: boolean;
9
+ }
2
10
  export default class DiscordGenerator extends Generator {
3
11
  private answers;
4
12
  constructor(args: string | string[], options: Generator.GeneratorOptions);
@@ -7,4 +15,6 @@ export default class DiscordGenerator extends Generator {
7
15
  writing(): void;
8
16
  install(): Promise<void>;
9
17
  end(): Promise<void>;
18
+ _replaceWords(content: Buffer, answers: Answers): string;
10
19
  }
20
+ export {};
package/app/index.js CHANGED
@@ -16,10 +16,9 @@ const yeoman_generator_1 = __importDefault(require("yeoman-generator"));
16
16
  const path_1 = __importDefault(require("path"));
17
17
  const TEMPLATE_DIR = '../templates/';
18
18
  const USER_DIR = '.';
19
- const OPEN = '<%= ';
20
- const CLOSE = ' %>';
21
- const BOT_NAME = 'bot-name';
22
- const BOT_TOKEN = 'bot-token';
19
+ const BOT_NAME = /<%= bot-name %>/g;
20
+ const BOT_TOKEN = /<%= bot-token %>/g;
21
+ const BOT_NAME_RUST = /bot_name/g;
23
22
  class DiscordGenerator extends yeoman_generator_1.default {
24
23
  constructor(args, options) {
25
24
  super(args, options);
@@ -53,7 +52,11 @@ class DiscordGenerator extends yeoman_generator_1.default {
53
52
  {
54
53
  name: 'New Discord Bot (Python)',
55
54
  value: 'python'
56
- }
55
+ },
56
+ {
57
+ name: 'New Discord Bot (Rust)',
58
+ value: 'rust'
59
+ },
57
60
  ]
58
61
  },
59
62
  {
@@ -79,12 +82,8 @@ class DiscordGenerator extends yeoman_generator_1.default {
79
82
  writing() {
80
83
  this.sourceRoot(path_1.default.join(__dirname, TEMPLATE_DIR + this.answers.botType));
81
84
  ['.'].forEach((path) => {
82
- const replaceWords = (answers, content) => [
83
- [BOT_NAME, this.answers.botName],
84
- [BOT_TOKEN, this.answers.botToken]
85
- ].reduce((acc, [templateWord, userAnswer]) => acc.replace(new RegExp(`${OPEN}${templateWord}${CLOSE}`, 'g'), userAnswer), content.toString());
86
85
  this.fs.copy(this.templatePath(path), this.destinationPath(USER_DIR, this.answers.botName, path), {
87
- process: (content) => replaceWords(this.answers, content)
86
+ process: (content) => this._replaceWords(content, this.answers)
88
87
  });
89
88
  });
90
89
  }
@@ -124,6 +123,16 @@ class DiscordGenerator extends yeoman_generator_1.default {
124
123
  }
125
124
  });
126
125
  }
126
+ _replaceWords(content, answers) {
127
+ if (answers.botType === 'rust') {
128
+ return content.toString()
129
+ .replace(BOT_TOKEN, answers.botToken)
130
+ .replace(BOT_NAME_RUST, answers.botName);
131
+ }
132
+ return content.toString()
133
+ .replace(BOT_TOKEN, answers.botToken)
134
+ .replace(BOT_NAME, answers.botName);
135
+ }
127
136
  }
128
137
  exports.default = DiscordGenerator;
129
138
  //# sourceMappingURL=index.js.map
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,7 +1,7 @@
1
1
  {
2
2
  "name": "generator-discord",
3
3
  "displayName": "Generator-Discord",
4
- "version": "1.2.2",
4
+ "version": "1.2.4",
5
5
  "main": "./app/index.js",
6
6
  "description": "Yeoman generator for Discord.js",
7
7
  "keywords": [
@@ -35,12 +35,11 @@
35
35
  },
36
36
  "homepage": "https://github.com/emilkrebs/Generator-Discord",
37
37
  "dependencies": {
38
- "typescript": "^5.1.6",
39
38
  "yeoman-generator": "^5.9.0"
40
39
  },
41
40
  "devDependencies": {
42
- "dotenv": "^16.3.1",
43
- "vitest": "^0.34.1",
41
+ "vitest": "^0.34.3",
42
+ "typescript": "^5.2.2",
44
43
  "yeoman-test": "^7.4.0"
45
44
  }
46
45
  }
package/src/index.ts CHANGED
@@ -1,19 +1,19 @@
1
1
  import Generator from 'yeoman-generator';
2
2
  import path from 'path';
3
3
 
4
-
5
4
  const TEMPLATE_DIR = '../templates/';
6
5
  const USER_DIR = '.';
7
6
 
8
- const OPEN = '<%= ';
9
- const CLOSE = ' %>';
7
+ const BOT_NAME = /<%= bot-name %>/g;
8
+ const BOT_TOKEN = /<%= bot-token %>/g;
9
+
10
+ const BOT_NAME_RUST = /bot_name/g;
10
11
 
11
- const BOT_NAME = 'bot-name';
12
- const BOT_TOKEN = 'bot-token';
12
+ type BotType = 'typescript' | 'javascript' | 'python' | 'rust';
13
13
 
14
14
  interface Answers {
15
15
  botName: string;
16
- botType: string;
16
+ botType: BotType;
17
17
  botToken: string;
18
18
  openWithCode: boolean;
19
19
  }
@@ -51,12 +51,15 @@ export default class DiscordGenerator extends Generator {
51
51
  {
52
52
  name: 'New Discord Bot (JavaScript)',
53
53
  value: 'javascript'
54
- }
55
- ,
54
+ },
56
55
  {
57
56
  name: 'New Discord Bot (Python)',
58
57
  value: 'python'
59
- }
58
+ },
59
+ {
60
+ name: 'New Discord Bot (Rust)',
61
+ value: 'rust'
62
+ },
60
63
  ]
61
64
  },
62
65
  {
@@ -84,24 +87,6 @@ export default class DiscordGenerator extends Generator {
84
87
  this.sourceRoot(path.join(__dirname, TEMPLATE_DIR + this.answers.botType));
85
88
  ['.'].forEach(
86
89
  (path: string) => {
87
- const replaceWords = (
88
- answers: Answers,
89
- content: Buffer
90
- ): string =>
91
- [
92
- [BOT_NAME, this.answers.botName],
93
- [BOT_TOKEN, this.answers.botToken]
94
- ].reduce(
95
- (acc: string, [templateWord, userAnswer]) =>
96
- acc.replace(
97
- new RegExp(
98
- `${OPEN}${templateWord}${CLOSE}`,
99
- 'g'
100
- ),
101
- userAnswer
102
- ),
103
- content.toString()
104
- );
105
90
  this.fs.copy(
106
91
  this.templatePath(path),
107
92
  this.destinationPath(
@@ -110,13 +95,13 @@ export default class DiscordGenerator extends Generator {
110
95
  path
111
96
  ),
112
97
  {
113
- process: (content: Buffer) =>
114
- replaceWords(this.answers, content)
98
+ process: (content: Buffer) => this._replaceWords(content, this.answers)
115
99
  }
116
100
  );
117
101
  }
118
102
  );
119
103
  }
104
+
120
105
  async install(): Promise<void> {
121
106
  this.log('');
122
107
  if (this.answers.botType === 'typescript' || this.answers.botType === 'javascript') {
@@ -155,4 +140,16 @@ export default class DiscordGenerator extends Generator {
155
140
  )]);
156
141
  }
157
142
  }
143
+
144
+ _replaceWords(content: Buffer, answers: Answers): string {
145
+ if(answers.botType === 'rust') {
146
+ return content.toString()
147
+ .replace(BOT_TOKEN, answers.botToken)
148
+ .replace(BOT_NAME_RUST, answers.botName);
149
+ }
150
+
151
+ return content.toString()
152
+ .replace(BOT_TOKEN,answers.botToken)
153
+ .replace(BOT_NAME, answers.botName);
154
+ }
158
155
  }
@@ -8,6 +8,6 @@
8
8
  "start": "node ./src/index.js"
9
9
  },
10
10
  "dependencies": {
11
- "discord.js": "^14.12.1",
11
+ "discord.js": "^14.13.0"
12
12
  }
13
13
  }
@@ -0,0 +1 @@
1
+ discord.py ~= 2.3.2
@@ -0,0 +1,10 @@
1
+ [package]
2
+ name = "bot_name"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+
6
+ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
+
8
+ [dependencies]
9
+ serenity = { version = "0.11.6", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] }
10
+ tokio = { version = "1.0", features = ["macros", "rt-multi-thread"] }
@@ -0,0 +1,72 @@
1
+ use serenity::async_trait;
2
+ use serenity::model::channel::Message;
3
+ use serenity::model::gateway::Ready;
4
+ use serenity::prelude::*;
5
+
6
+ struct Handler;
7
+
8
+ const PREFIX: &str = "!";
9
+ const TOKEN: &str = "<%= bot-token %>";
10
+
11
+ #[async_trait]
12
+ impl EventHandler for Handler {
13
+
14
+ async fn message(&self, ctx: Context, msg: Message) {
15
+ // check if the message starts with the prefix
16
+ if msg.content.starts_with(&PREFIX) && !msg.author.bot {
17
+
18
+ // Split the message into command and arguments
19
+ let args = msg.content[PREFIX.len()..].trim().split(' ').collect::<Vec<&str>>();
20
+ let command = args[0];
21
+
22
+ // ping - bot will reply with Pong!
23
+ if command == "ping" {
24
+ // send a message to the channel
25
+ if let Err(why) = msg.channel_id.say(&ctx.http, "Pong!").await {
26
+ println!("Error sending message: {:?}", why);
27
+ }
28
+ }
29
+ // say <message> - bot will send the message
30
+ else if command == "say" {
31
+
32
+ // check if the user has provided a message
33
+ if args.len() == 1 {
34
+ if let Err(why) = msg.reply(&ctx.http, "Please provide a message to send.").await {
35
+ println!("Error sending message: {:?}", why);
36
+ }
37
+ return;
38
+ }
39
+
40
+ // send a message to the channel using the rest of the arguments
41
+ if let Err(why) = msg.channel_id.say(&ctx.http, &args[1..].join(" ")).await {
42
+ println!("Error sending message: {:?}", why);
43
+ }
44
+ }
45
+ }
46
+ }
47
+
48
+ async fn ready(&self, _: Context, ready: Ready) {
49
+ println!("Bot is logged in as {}.", ready.user.name);
50
+ }
51
+ }
52
+
53
+ #[tokio::main]
54
+ async fn main() {
55
+
56
+ // Set gateway intents, which decides what events the bot will be notified about
57
+ let intents = GatewayIntents::GUILD_MESSAGES
58
+ | GatewayIntents::DIRECT_MESSAGES
59
+ | GatewayIntents::MESSAGE_CONTENT;
60
+
61
+
62
+ // Create a new instance of the client
63
+ let mut client = Client::builder(&TOKEN, intents).event_handler(Handler).await.expect("Err creating client");
64
+
65
+
66
+ // Start the bot
67
+ if let Err(why) = client.start().await {
68
+ println!("Client error: {:?}", why);
69
+ }
70
+ }
71
+
72
+ // for more information on how to use serenity, check out the docs at https://docs.rs/serenity
@@ -10,7 +10,7 @@
10
10
  "build": "tsc"
11
11
  },
12
12
  "dependencies": {
13
- "discord.js": "^14.12.1",
14
- "typescript": "^5.1.6"
13
+ "discord.js": "^14.13.0",
14
+ "typescript": "^5.2.2"
15
15
  }
16
16
  }
@@ -44,6 +44,22 @@ describe('Check if the generator works', () => {
44
44
  });
45
45
  context.cleanup(); // clean-up
46
46
  }, 120_000);
47
+ test('Should generate rust files', async () => {
48
+ const context = createHelpers({}).run(path.join(__dirname, '../app'));
49
+ context.targetDirectory = path.join(__dirname, '../test-temp'); // generate in test-temp
50
+ context.cleanTestDirectory(true); // clean-up test-temp
51
+ await context.onGenerator(generator => generator.destinationRoot(context.targetDirectory, false))
52
+ .withAnswers({
53
+ ...pythonAnswers,
54
+ botType: 'rust',
55
+ })
56
+ .then((result) => {
57
+ result.assertFile([`${pythonAnswers.botName}/Cargo.toml`]);
58
+ result.assertFile([`${pythonAnswers.botName}/src/main.rs`]);
59
+ });
60
+ context.cleanup(); // clean-up
61
+ }
62
+ , 120_000);
47
63
  });
48
64
 
49
65