generator-discord 1.3.2 → 1.3.3
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/app/index.js +1 -1
- package/app/index.js.map +1 -1
- package/package.json +4 -3
- package/src/index.ts +1 -1
- package/templates/javascript/package.json +1 -1
- package/templates/python/main.py +2 -1
- package/templates/typescript/package.json +1 -1
- package/test/templates.test.ts +105 -0
- package/test/generator.test.ts +0 -127
package/app/index.js
CHANGED
|
@@ -108,7 +108,7 @@ export default class DiscordGenerator extends Generator {
|
|
|
108
108
|
await this.spawn('npm', ['run', 'build'], options);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
this.log('Your Discord Bot \
|
|
111
|
+
this.log('Your Discord Bot \x1b[32m' + this.answers.botName + '\x1b[0m has been created!');
|
|
112
112
|
}
|
|
113
113
|
async end() {
|
|
114
114
|
const answer = await this.prompt({
|
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.3.
|
|
4
|
+
"version": "1.3.3",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": "./app/index.js",
|
|
7
7
|
"description": "Create a basic Discord-Bot, supporting many programming languages.",
|
|
@@ -43,8 +43,9 @@
|
|
|
43
43
|
"yeoman-generator": "^7.1.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
47
|
-
"@typescript-eslint/parser": "^6.
|
|
46
|
+
"@typescript-eslint/eslint-plugin": "^6.11.0",
|
|
47
|
+
"@typescript-eslint/parser": "^6.11.0",
|
|
48
|
+
"dotenv": "^16.3.1",
|
|
48
49
|
"eslint": "^8.53.0",
|
|
49
50
|
"typescript": "^5.2.2",
|
|
50
51
|
"vitest": "^0.34.6",
|
package/src/index.ts
CHANGED
|
@@ -152,7 +152,7 @@ export default class DiscordGenerator extends Generator {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
this.log('Your Discord Bot \
|
|
155
|
+
this.log('Your Discord Bot \x1b[32m' + this.answers.botName + '\x1b[0m has been created!');
|
|
156
156
|
|
|
157
157
|
}
|
|
158
158
|
|
package/templates/python/main.py
CHANGED
|
@@ -17,4 +17,5 @@ async def on_message(message):
|
|
|
17
17
|
if message.content.startswith('!ping'):
|
|
18
18
|
await message.channel.send('Pong!')
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
# 'log_handler=None' is used to disable the default logging handler. Remove it if you want to use the default logging handler.
|
|
21
|
+
client.run('<%= bot-token %>', log_handler=None)
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
import { createHelpers } from 'yeoman-test';
|
|
3
|
+
import { spawn, exec } from 'child_process';
|
|
4
|
+
import * as dotenv from 'dotenv';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import url from 'url';
|
|
7
|
+
|
|
8
|
+
const __dirname = url.fileURLToPath(new URL('../', import.meta.url));
|
|
9
|
+
const TIMEOUT = 30_000; // 30 seconds
|
|
10
|
+
|
|
11
|
+
dotenv.config();
|
|
12
|
+
|
|
13
|
+
const { BOT_TOKEN } = process.env;
|
|
14
|
+
if (!BOT_TOKEN) {
|
|
15
|
+
throw new Error('You must specify a valid bot token in the BOT_TOKEN environment variable');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const defaultAnswers = {
|
|
19
|
+
botName: 'test-run-bot',
|
|
20
|
+
botType: 'typescript',
|
|
21
|
+
botToken: BOT_TOKEN,
|
|
22
|
+
openWithCode: false,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
describe('Check if the templates work', () => {
|
|
26
|
+
const targetRoot = path.join(__dirname, 'test-temp');
|
|
27
|
+
const moduleRoot = path.join(__dirname, 'app');
|
|
28
|
+
const resultRoot = path.join(targetRoot, defaultAnswers.botName);
|
|
29
|
+
|
|
30
|
+
test('Should generate and run TypeScript Discord Bot', async () => {
|
|
31
|
+
const context = createHelpers({}).run(moduleRoot);
|
|
32
|
+
|
|
33
|
+
context.targetDirectory = targetRoot;
|
|
34
|
+
context.cleanTestDirectory(true);
|
|
35
|
+
await context
|
|
36
|
+
.onGenerator(generator => {
|
|
37
|
+
generator.destinationRoot(targetRoot);
|
|
38
|
+
})
|
|
39
|
+
.withAnswers(defaultAnswers)
|
|
40
|
+
.then(async () => {
|
|
41
|
+
const result = await runBot('node', ['./dist/src/index.js'], resultRoot);
|
|
42
|
+
expect(result).toContain(BOT_OUTPUT_START);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
context.cleanup();
|
|
46
|
+
}, 120_000);
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
test.skip('Should generate and run Python Discord Bot', async () => {
|
|
50
|
+
const context = createHelpers({}).run(moduleRoot);
|
|
51
|
+
|
|
52
|
+
context.targetDirectory = targetRoot;
|
|
53
|
+
context.cleanTestDirectory(true);
|
|
54
|
+
await context
|
|
55
|
+
.onGenerator(generator => {
|
|
56
|
+
generator.destinationRoot(targetRoot);
|
|
57
|
+
})
|
|
58
|
+
.withAnswers({...defaultAnswers, botType: 'python' })
|
|
59
|
+
.then(async () => {
|
|
60
|
+
// install dependencies
|
|
61
|
+
await exec('pip3 install -r requirements.txt', { cwd: resultRoot });
|
|
62
|
+
|
|
63
|
+
const result = await runBot('python', ['main.py'], resultRoot);
|
|
64
|
+
expect(result).toContain(BOT_OUTPUT_START);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
context.cleanup();
|
|
68
|
+
}, 120_000);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
async function runBot(command: string, args: string[], root: string): Promise<string> {
|
|
73
|
+
const childProcess = spawn(command, args, { cwd: root, stdio: 'pipe', timeout: TIMEOUT });
|
|
74
|
+
|
|
75
|
+
const result = await new Promise<string>((resolve) => {
|
|
76
|
+
// timeout
|
|
77
|
+
const timeout = setTimeout(() => {
|
|
78
|
+
resolve('TIMEOUT');
|
|
79
|
+
}, TIMEOUT);
|
|
80
|
+
|
|
81
|
+
// output
|
|
82
|
+
childProcess.stdout.on('data', (data) => {
|
|
83
|
+
clearTimeout(timeout);
|
|
84
|
+
|
|
85
|
+
resolve(data.toString());
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
childProcess.stderr.on('data', (data) => {
|
|
89
|
+
clearTimeout(timeout);
|
|
90
|
+
|
|
91
|
+
resolve(data.toString());
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
childProcess.on('close', () => {
|
|
95
|
+
clearTimeout(timeout);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
childProcess.kill('SIGINT');
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
const BOT_OUTPUT_START = 'Bot is logged in as';
|
package/test/generator.test.ts
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { describe, test } from 'vitest';
|
|
2
|
-
import { createHelpers } from 'yeoman-test';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import url from 'url';
|
|
5
|
-
|
|
6
|
-
const __dirname = url.fileURLToPath(new URL('../', import.meta.url));
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const defaultAnswers = {
|
|
10
|
-
botName: 'test-bot',
|
|
11
|
-
botType: 'typescript',
|
|
12
|
-
botToken: 'xxx',
|
|
13
|
-
openWithCode: false,
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
describe('Check yeoman generator works', () => {
|
|
17
|
-
const targetRoot = path.join(__dirname, 'test-temp');
|
|
18
|
-
const moduleRoot = path.join(__dirname, 'app');
|
|
19
|
-
const resultRoot = path.join(targetRoot, defaultAnswers.botName);
|
|
20
|
-
|
|
21
|
-
test('Should produce TypeScript files', async () => {
|
|
22
|
-
const context = createHelpers({}).run(moduleRoot);
|
|
23
|
-
const configJson = path.join(resultRoot, 'config.json');
|
|
24
|
-
|
|
25
|
-
context.targetDirectory = targetRoot;
|
|
26
|
-
context.cleanTestDirectory(true);
|
|
27
|
-
await context
|
|
28
|
-
.onGenerator(generator => {
|
|
29
|
-
generator.destinationRoot(targetRoot);
|
|
30
|
-
})
|
|
31
|
-
.withAnswers(defaultAnswers)
|
|
32
|
-
.withArguments(['skip-install', 'skip-build'])
|
|
33
|
-
.then((result) => {
|
|
34
|
-
const files = [
|
|
35
|
-
configJson,
|
|
36
|
-
resultRoot + '/src/index.ts',
|
|
37
|
-
resultRoot + '/tsconfig.json',
|
|
38
|
-
resultRoot + '/package.json',
|
|
39
|
-
];
|
|
40
|
-
result.assertFile(files);
|
|
41
|
-
result.assertJsonFileContent(configJson, CONFIG_JSON_EXPECTED);
|
|
42
|
-
});
|
|
43
|
-
// context.cleanup();
|
|
44
|
-
}, 120_000);
|
|
45
|
-
|
|
46
|
-
test('Should produce Python files', async () => {
|
|
47
|
-
const context = createHelpers({}).run(moduleRoot);
|
|
48
|
-
const mainPy = path.join(resultRoot, 'main.py');
|
|
49
|
-
|
|
50
|
-
context.targetDirectory = targetRoot;
|
|
51
|
-
context.cleanTestDirectory(true);
|
|
52
|
-
await context
|
|
53
|
-
.onGenerator(generator => {
|
|
54
|
-
generator.destinationRoot(targetRoot);
|
|
55
|
-
})
|
|
56
|
-
.withAnswers({ ...defaultAnswers, botType: 'python' })
|
|
57
|
-
.then((result) => {
|
|
58
|
-
const files = [
|
|
59
|
-
mainPy,
|
|
60
|
-
resultRoot + '/requirements.txt',
|
|
61
|
-
];
|
|
62
|
-
result.assertFile(files);
|
|
63
|
-
// result.assertFileContent(mainPy, PYTHON_BOT_EXPECTED);
|
|
64
|
-
});
|
|
65
|
-
context.cleanup();
|
|
66
|
-
}, 120_000);
|
|
67
|
-
|
|
68
|
-
test('Should produce Rust files', async () => {
|
|
69
|
-
const context = createHelpers({}).run(moduleRoot);
|
|
70
|
-
const cargoToml = path.join(resultRoot, 'Cargo.toml');
|
|
71
|
-
|
|
72
|
-
context.targetDirectory = targetRoot;
|
|
73
|
-
context.cleanTestDirectory(true);
|
|
74
|
-
await context
|
|
75
|
-
.onGenerator(generator => {
|
|
76
|
-
generator.destinationRoot(targetRoot);
|
|
77
|
-
})
|
|
78
|
-
.withAnswers({ ...defaultAnswers, botType: 'rust' })
|
|
79
|
-
.then((result) => {
|
|
80
|
-
const files = [
|
|
81
|
-
resultRoot + '/src/main.rs',
|
|
82
|
-
cargoToml
|
|
83
|
-
];
|
|
84
|
-
result.assertFile(files);
|
|
85
|
-
result.assertFileContent(cargoToml, CARGO_TOML_EXPECTED);
|
|
86
|
-
});
|
|
87
|
-
context.cleanup();
|
|
88
|
-
}, 120_000);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
const CONFIG_JSON_EXPECTED: Record<string, string> = {
|
|
92
|
-
'token': 'xxx'
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
const PYTHON_BOT_EXPECTED = `import discord
|
|
96
|
-
|
|
97
|
-
intents = discord.Intents.default()
|
|
98
|
-
intents.message_content = True
|
|
99
|
-
|
|
100
|
-
client = discord.Client(intents=intents)
|
|
101
|
-
|
|
102
|
-
@client.event
|
|
103
|
-
async def on_ready():
|
|
104
|
-
print(f'Bot is logged in as {client.user}')
|
|
105
|
-
|
|
106
|
-
@client.event
|
|
107
|
-
async def on_message(message):
|
|
108
|
-
if message.author == client.user:
|
|
109
|
-
return
|
|
110
|
-
|
|
111
|
-
if message.content.startswith('!ping'):
|
|
112
|
-
await message.channel.send('Pong!')
|
|
113
|
-
|
|
114
|
-
client.run('${defaultAnswers.botToken}')
|
|
115
|
-
`;
|
|
116
|
-
|
|
117
|
-
const CARGO_TOML_EXPECTED = `[package]
|
|
118
|
-
name = "${defaultAnswers.botName}"
|
|
119
|
-
version = "0.1.0"
|
|
120
|
-
edition = "2021"
|
|
121
|
-
|
|
122
|
-
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
123
|
-
|
|
124
|
-
[dependencies]
|
|
125
|
-
serenity = { version = "0.11.6", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] }
|
|
126
|
-
tokio = { version = "1.0", features = ["macros", "rt-multi-thread"] }
|
|
127
|
-
`;
|