fnapi-js 1.1.2 → 2.0.0-beta.0
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/LICENSE +21 -21
- package/README.md +81 -57
- package/config.example.json +24 -0
- package/dist/index.cjs +10508 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +5737 -0
- package/dist/index.d.ts +5737 -0
- package/dist/index.js +10218 -0
- package/dist/index.js.map +1 -0
- package/docs.md +8848 -0
- package/package.json +54 -13
- package/src/client/Aes.js +0 -23
- package/src/client/ApiClient.js +0 -114
- package/src/client/Banners.js +0 -23
- package/src/client/Cosmetics.js +0 -103
- package/src/client/CreatorCode.js +0 -19
- package/src/client/Map.js +0 -15
- package/src/client/Misc.js +0 -21
- package/src/client/News.js +0 -16
- package/src/client/Playlists.js +0 -25
- package/src/client/Shop.js +0 -17
- package/src/client/Stats.js +0 -50
- package/src/docs/DOCUMENTATION.md +0 -435
- package/src/enums/AccountType.js +0 -11
- package/src/enums/CosmeticType.js +0 -251
- package/src/enums/Language.js +0 -58
- package/src/enums/MatchMethod.js +0 -14
- package/src/enums/RequestFlags.js +0 -62
- package/src/enums/StatsImage.js +0 -15
- package/src/enums/TimeWindow.js +0 -9
- package/src/examples/api-example.js +0 -220
- package/src/examples/fnbrjsAndfnapi.js +0 -63
- package/src/http/Response.js +0 -30
- package/src/index.d.ts +0 -503
- package/src/index.js +0 -13
- package/src/types/SearchOptions.js +0 -50
- package/src/utils/Enums.js +0 -39
package/src/enums/Language.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
class Language {
|
|
2
|
-
static LANGS = {
|
|
3
|
-
"arabic": "ar",
|
|
4
|
-
"german": "de",
|
|
5
|
-
"english": "en",
|
|
6
|
-
"spanish": "es",
|
|
7
|
-
"spanishLatinAmerica": "es-419",
|
|
8
|
-
"french": "fr",
|
|
9
|
-
"indonesian": "id",
|
|
10
|
-
"italian": "it",
|
|
11
|
-
"japanese": "ja",
|
|
12
|
-
"korean": "ko",
|
|
13
|
-
"polish": "pl",
|
|
14
|
-
"portugueseBrazil": "pt-BR",
|
|
15
|
-
"russian": "ru",
|
|
16
|
-
"thai": "th",
|
|
17
|
-
"turkish": "tr",
|
|
18
|
-
"vietnamese": "vi",
|
|
19
|
-
"chineseSimplified": "zh-Hans",
|
|
20
|
-
"chineseTraditional": "zh-Hant"
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
static arabic() { return this.LANGS.arabic }
|
|
24
|
-
static german() { return this.LANGS.german }
|
|
25
|
-
static english() { return this.LANGS.english }
|
|
26
|
-
static spanish() { return this.LANGS.spanish }
|
|
27
|
-
static spanishLatinAmerica() { return this.LANGS.spanishLatinAmerica }
|
|
28
|
-
static french() { return this.LANGS.french }
|
|
29
|
-
static indonesian() { return this.LANGS.indonesian }
|
|
30
|
-
static italian() { return this.LANGS.italian }
|
|
31
|
-
static japanese() { return this.LANGS.japanese }
|
|
32
|
-
static korean() { return this.LANGS.korean }
|
|
33
|
-
static polish() { return this.LANGS.polish }
|
|
34
|
-
static portugueseBrazil() { return this.LANGS.portugueseBrazil }
|
|
35
|
-
static russian() { return this.LANGS.russian }
|
|
36
|
-
static thai() { return this.LANGS.thai }
|
|
37
|
-
static turkish() { return this.LANGS.turkish }
|
|
38
|
-
static vietnamese() { return this.LANGS.vietnamese }
|
|
39
|
-
static chineseSimplified() { return this.LANGS.chineseSimplified }
|
|
40
|
-
static chineseTraditional() { return this.LANGS.chineseTraditional }
|
|
41
|
-
|
|
42
|
-
static getAll() {
|
|
43
|
-
return Object.values(this.LANGS);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
static isValid(lang) {
|
|
47
|
-
if (Object.values(this.LANGS).includes(lang)) {
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (Object.keys(this.LANGS).includes(lang)) {
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export default Language;
|
package/src/enums/MatchMethod.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
class MatchMethod {
|
|
2
|
-
static FULL = 'full';
|
|
3
|
-
static CONTAINS = 'contains';
|
|
4
|
-
static STARTS = 'starts';
|
|
5
|
-
static ENDS = 'ends';
|
|
6
|
-
|
|
7
|
-
static full() { return this.FULL; }
|
|
8
|
-
static exact() { return this.FULL; }
|
|
9
|
-
static contains() { return this.CONTAINS; }
|
|
10
|
-
static starts() { return this.STARTS; }
|
|
11
|
-
static ends() { return this.ENDS; }
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export default MatchMethod;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
class RequestFlags {
|
|
2
|
-
static FLAGS = {
|
|
3
|
-
NONE: 0,
|
|
4
|
-
INCLUDE_PATHS: 1 << 0, // 1
|
|
5
|
-
INCLUDE_GAMEPLAY_TAGS: 1 << 1, // 2
|
|
6
|
-
INCLUDE_SHOP_HISTORY: 1 << 2 // 4
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
static multiple(...flags) {
|
|
11
|
-
const combined = flags.reduce((acc, flag) => acc | flag, 0);
|
|
12
|
-
return `0x${combined.toString(16)}`;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
static hasFlag(value, flag) {
|
|
17
|
-
const numValue = typeof value === 'string' ?
|
|
18
|
-
parseInt(value.replace('0x', ''), 16) : value;
|
|
19
|
-
return (numValue & flag) === flag;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
static getSetFlags(value) {
|
|
23
|
-
const numValue = typeof value === 'string' ?
|
|
24
|
-
parseInt(value.replace('0x', ''), 16) : value;
|
|
25
|
-
return Object.entries(this.FLAGS)
|
|
26
|
-
.filter(([key, flag]) =>
|
|
27
|
-
flag !== 0 && this.hasFlag(numValue, flag)
|
|
28
|
-
)
|
|
29
|
-
.map(([key, flag]) => key);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
static all() {
|
|
33
|
-
return this.multiple(
|
|
34
|
-
this.FLAGS.INCLUDE_PATHS,
|
|
35
|
-
this.FLAGS.INCLUDE_GAMEPLAY_TAGS,
|
|
36
|
-
this.FLAGS.INCLUDE_SHOP_HISTORY
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
static paths() {
|
|
41
|
-
return this.multiple(this.FLAGS.INCLUDE_PATHS);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
static gameplayTags() {
|
|
45
|
-
return this.multiple(this.FLAGS.INCLUDE_GAMEPLAY_TAGS);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
static shopHistory() {
|
|
49
|
-
return this.multiple(this.FLAGS.INCLUDE_SHOP_HISTORY);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
static none() {
|
|
53
|
-
return this.FLAGS.NONE;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
static safeGet(obj, path, defaultValue = null) {
|
|
57
|
-
return path.split('.')
|
|
58
|
-
.reduce((acc, part) => acc && acc[part], obj) ?? defaultValue;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export default RequestFlags;
|
package/src/enums/StatsImage.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
class StatsImage {
|
|
2
|
-
static ALL = 'all';
|
|
3
|
-
static KBM = 'keyboardMouse';
|
|
4
|
-
static GAMEPAD = 'gamepad';
|
|
5
|
-
static TOUCH = 'touch';
|
|
6
|
-
static NONE = 'none';
|
|
7
|
-
|
|
8
|
-
static all() { return this.ALL; }
|
|
9
|
-
static keyboardMouse() { return this.KBM; }
|
|
10
|
-
static gamepad() { return this.GAMEPAD; }
|
|
11
|
-
static touch() { return this.TOUCH; }
|
|
12
|
-
static none() { return this.NONE; }
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export default StatsImage;
|
package/src/enums/TimeWindow.js
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { ApiClient, Enums, SearchOptions } from '../index.js'; // if you are using this code, change this to the module name, so: fnapi-js
|
|
3
|
-
import readline from 'readline';
|
|
4
|
-
|
|
5
|
-
const fnApi = new ApiClient({ apiKey: 'api-key here' });
|
|
6
|
-
|
|
7
|
-
const rl = readline.createInterface({
|
|
8
|
-
input: process.stdin,
|
|
9
|
-
output: process.stdout
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
const commands = {
|
|
13
|
-
'stats': async (args) => {
|
|
14
|
-
const [username] = args;
|
|
15
|
-
if (!username) {
|
|
16
|
-
console.log('Usage: stats <username>');
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
const stats = await fnApi.stats.get(
|
|
21
|
-
username,
|
|
22
|
-
Enums.accountType.epic(),
|
|
23
|
-
Enums.timeWindow.lifetime(),
|
|
24
|
-
Enums.statsImage.all()
|
|
25
|
-
);
|
|
26
|
-
console.log('Stats:', JSON.stringify(stats, null, 2));
|
|
27
|
-
} catch (error) {
|
|
28
|
-
console.error('Error:', error.message);
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
'help': () => {
|
|
32
|
-
console.log('Available commands:\n' +
|
|
33
|
-
' stats <username> - Get player stats\n' +
|
|
34
|
-
' exit - Exit the program\n' +
|
|
35
|
-
' help - Show this help message\n' +
|
|
36
|
-
' map - Get the map\n' +
|
|
37
|
-
' searchcosmetic <name> - Search for a cosmetic\n' +
|
|
38
|
-
' cosmetics <all|new|tracks|instrument|cars|lego|legokits|beans> - Get cosmetics\n' +
|
|
39
|
-
' cosmetic <id> - Get a specific cosmetic\n' +
|
|
40
|
-
' creatorcode <code> - Get a creator code\n' +
|
|
41
|
-
' aes - Get all aes keys\n' +
|
|
42
|
-
' banners - Get all banners\n' +
|
|
43
|
-
' bannerscolors - Get all banner colors\n' +
|
|
44
|
-
' map - Get the map\n' +
|
|
45
|
-
' news - Get the news\n' +
|
|
46
|
-
' playlists - Get all playlists\n' +
|
|
47
|
-
' shop - Get the shop'
|
|
48
|
-
);
|
|
49
|
-
},
|
|
50
|
-
'news': async () => {
|
|
51
|
-
try {
|
|
52
|
-
const data = await fnApi.news.get();
|
|
53
|
-
console.log(JSON.stringify(data, null, 2));
|
|
54
|
-
} catch (error) {
|
|
55
|
-
console.error("Error:", error.message);
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
'playlists': async () => {
|
|
59
|
-
try {
|
|
60
|
-
const data = await fnApi.playlists.all();
|
|
61
|
-
console.log(JSON.stringify(data, null, 2));
|
|
62
|
-
} catch (error) {
|
|
63
|
-
console.error("Error:", error.message);
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
'shop': async () => {
|
|
67
|
-
try {
|
|
68
|
-
const data = await fnApi.shop.get();
|
|
69
|
-
console.log(JSON.stringify(data, null, 2));
|
|
70
|
-
} catch (error) {
|
|
71
|
-
console.error("Error:", error.message);
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
'map': async () => {
|
|
75
|
-
try {
|
|
76
|
-
const data = await fnApi.map.get();
|
|
77
|
-
console.log(JSON.stringify(data, null, 2));
|
|
78
|
-
} catch (error) {
|
|
79
|
-
console.error("Error:", error.message);
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
'aes': async () => {
|
|
83
|
-
try {
|
|
84
|
-
const data = await fnApi.aes.get();
|
|
85
|
-
console.log(JSON.stringify(data, null, 2));
|
|
86
|
-
} catch (error) {
|
|
87
|
-
console.error("Error:", error.message);
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
'banners': async () => {
|
|
91
|
-
try {
|
|
92
|
-
const data = await fnApi.banners.get();
|
|
93
|
-
console.log(JSON.stringify(data, null, 2));
|
|
94
|
-
} catch (error) {
|
|
95
|
-
console.error("Error:", error.message);
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
'bannerscolors': async () => {
|
|
99
|
-
try {
|
|
100
|
-
const data = await fnApi.banners.getColors();
|
|
101
|
-
console.log(JSON.stringify(data, null, 2));
|
|
102
|
-
} catch (error) {
|
|
103
|
-
console.error("Error:", error.message);
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
'creatorcode': async (args) => {
|
|
107
|
-
const [code] = args;
|
|
108
|
-
if (!code) {
|
|
109
|
-
console.log('Usage creatorcode <code>')
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
try {
|
|
114
|
-
const search = await fnApi.sac.get(code);
|
|
115
|
-
console.log('Creator Code:', JSON.stringify(search, null, 2));
|
|
116
|
-
} catch (eorrr) {
|
|
117
|
-
console.error("Error:", eorrr.message);
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
'searchcosmetic': async (args) => {
|
|
121
|
-
const [name] = args;
|
|
122
|
-
if (!name) {
|
|
123
|
-
console.log('Usage: searchcosmetic <name>');
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
try {
|
|
127
|
-
const searchOptions = new SearchOptions()
|
|
128
|
-
.setMatchMethod(Enums.matchMethod.exact())
|
|
129
|
-
.setName(name);
|
|
130
|
-
const cosmetics = await fnApi.cosmetics.search(searchOptions, Enums.requestFlags.multiple(Enums.requestFlags.paths(), Enums.requestFlags.gameplayTags()), false);
|
|
131
|
-
console.log('Cosmetics:', JSON.stringify(cosmetics.body().data, null, 2));
|
|
132
|
-
} catch (error) {
|
|
133
|
-
console.error('Error:', error.message);
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
'cosmetic': async (args) => {
|
|
137
|
-
const [id] = args;
|
|
138
|
-
if (!id) {
|
|
139
|
-
console.log('Usage: cosmetic <id>');
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
try {
|
|
143
|
-
const cosmetic = await fnApi.cosmetics.getById(id, Enums.requestFlags.all());
|
|
144
|
-
console.log('Cosmetic:', JSON.stringify(cosmetic.body().data, null, 2));
|
|
145
|
-
} catch (error) {
|
|
146
|
-
console.error('Error:', error.message);
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
'cosmetics': async (args) => {
|
|
150
|
-
const [type] = args;
|
|
151
|
-
if (!type) {
|
|
152
|
-
console.log('Usage: cosmetics <all|new|tracks|instrument|cars|lego|legokits|beans>');
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
try {
|
|
156
|
-
switch (type) {
|
|
157
|
-
case 'all':
|
|
158
|
-
const cosmetics = await fnApi.cosmetics.getAll(Enums.requestFlags.all());
|
|
159
|
-
console.log('Cosmetics:', JSON.stringify(cosmetics.body().data, null, 2));
|
|
160
|
-
break;
|
|
161
|
-
case 'new':
|
|
162
|
-
const cosmeticsNew = await fnApi.cosmetics.getAllNew(Enums.requestFlags.all());
|
|
163
|
-
console.log('Cosmetics:', JSON.stringify(cosmeticsNew.body().data, null, 2));
|
|
164
|
-
break;
|
|
165
|
-
case 'tracks':
|
|
166
|
-
const cosmeticsTracks = await fnApi.cosmetics.getAllTracks(Enums.requestFlags.all());
|
|
167
|
-
console.log('Cosmetics:', JSON.stringify(cosmeticsTracks.body().data, null, 2));
|
|
168
|
-
break;
|
|
169
|
-
case 'instrument':
|
|
170
|
-
const cosmeticsInstrument = await fnApi.cosmetics.getAllInstrument(Enums.requestFlags.all());
|
|
171
|
-
console.log('Cosmetics:', JSON.stringify(cosmeticsInstrument.body().data, null, 2));
|
|
172
|
-
break;
|
|
173
|
-
case 'cars':
|
|
174
|
-
const cosmeticsCars = await fnApi.cosmetics.getAllCars(Enums.requestFlags.all());
|
|
175
|
-
console.log('Cosmetics:', JSON.stringify(cosmeticsCars.body().data, null, 2));
|
|
176
|
-
break;
|
|
177
|
-
case 'lego':
|
|
178
|
-
const cosmeticsLego = await fnApi.cosmetics.getAllLego(Enums.requestFlags.all());
|
|
179
|
-
console.log('Cosmetics:', JSON.stringify(cosmeticsLego.body().data, null, 2));
|
|
180
|
-
break;
|
|
181
|
-
case 'legokits':
|
|
182
|
-
const cosmeticsLegoKits = await fnApi.cosmetics.getAllLegoKits(Enums.requestFlags.all());
|
|
183
|
-
console.log('Cosmetics:', JSON.stringify(cosmeticsLegoKits.body().data, null, 2));
|
|
184
|
-
break;
|
|
185
|
-
case 'beans':
|
|
186
|
-
const cosmeticsBeans = await fnApi.cosmetics.getAllBeans(Enums.requestFlags.all());
|
|
187
|
-
console.log('Cosmetics:', JSON.stringify(cosmeticsBeans.body().data, null, 2));
|
|
188
|
-
break;
|
|
189
|
-
}
|
|
190
|
-
} catch (error) {
|
|
191
|
-
console.error('Error:', error.message);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
console.log('Fortnite API CLI - Type "help" for commands');
|
|
197
|
-
rl.setPrompt('FN> ');
|
|
198
|
-
rl.prompt();
|
|
199
|
-
|
|
200
|
-
rl.on('line', async (line) => {
|
|
201
|
-
const [command, ...args] = line.trim().split(' ');
|
|
202
|
-
|
|
203
|
-
if (command === 'exit') {
|
|
204
|
-
rl.close();
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
if (commands[command]) {
|
|
209
|
-
await commands[command](args);
|
|
210
|
-
} else {
|
|
211
|
-
console.log('Unknown command. Type "help" for available commands');
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
rl.prompt();
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
rl.on('close', () => {
|
|
218
|
-
console.log('\nGoodbye!');
|
|
219
|
-
process.exit(0);
|
|
220
|
-
});
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
const { Client } = require('fnbr');
|
|
2
|
-
const { ApiClient, Enums, SearchOptions } = require('fnapi-js');
|
|
3
|
-
const { SearchSource } = require('jest');
|
|
4
|
-
|
|
5
|
-
const client = new Client();
|
|
6
|
-
|
|
7
|
-
const fnApi = new ApiClient({});
|
|
8
|
-
|
|
9
|
-
const handleCommand = async (m) => {
|
|
10
|
-
// console.log(m.content);
|
|
11
|
-
if (!m.content.startsWith('!')) return;
|
|
12
|
-
const args = m.content.slice(1).split(' ');
|
|
13
|
-
const command = args.shift().toLowerCase();
|
|
14
|
-
|
|
15
|
-
if (command === 'outfit' || command === 'skin') {
|
|
16
|
-
const search = new SearchOptions()
|
|
17
|
-
.setName(`${args.join(' ')}`)
|
|
18
|
-
.setMatchMethod(Enums.matchMethod.contains())
|
|
19
|
-
.setType(Enums.cosmeticType.outfit());
|
|
20
|
-
|
|
21
|
-
const skin = await fnApi.cosmetics.search(search, Enums.requestFlags.paths(), false);
|
|
22
|
-
if (!skin) {
|
|
23
|
-
console.log(`The skin ${args.join(' ')} wasn't found!`);
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
await m.client.party.me.setOutfit(skin.body().data.id, undefined, undefined);
|
|
28
|
-
await m.reply(`Set the skin to ${skin.body().data.name}!`);
|
|
29
|
-
|
|
30
|
-
} else if (command === 'emote' || command === 'dance') {
|
|
31
|
-
|
|
32
|
-
const search = new SearchOptions()
|
|
33
|
-
.setName(`${args.join(' ')}`)
|
|
34
|
-
.setMatchMethod(Enums.matchMethod.contains())
|
|
35
|
-
.setType(Enums.cosmeticType.emote());
|
|
36
|
-
|
|
37
|
-
const emote = await fnApi.cosmetics.search(search, Enums.requestFlags.paths(), false);
|
|
38
|
-
if (!emote) {
|
|
39
|
-
console.log(`The emote ${args.join(' ')} wasn't found!`);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
await m.client.party.me.setEmote(emote.body().data.id, fnApi.misc.fixPath(emote.body().data.path));
|
|
45
|
-
console.log(`Set the emote to ${emote.body().data.name}!`);
|
|
46
|
-
} catch (error) {
|
|
47
|
-
console.log(error);
|
|
48
|
-
console.log(`Failed to set the emote due to: ${error.message}`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
client.on('friend:message', (message) => {
|
|
54
|
-
console.log(`Message from ${message.author.displayName}: ${message.content}`);
|
|
55
|
-
|
|
56
|
-
handleCommand(message);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
client.on('ready', () => {
|
|
60
|
-
console.log(`Logged in as ${client.user.displayName}`);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
client.login();
|
package/src/http/Response.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
class Response {
|
|
2
|
-
constructor(status, responseData, headers = {}) {
|
|
3
|
-
this._status = status;
|
|
4
|
-
this._data = responseData;
|
|
5
|
-
this._headers = headers;
|
|
6
|
-
this._timestamp = new Date();
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
isSuccess() {
|
|
10
|
-
return this._status >= 200 && this._status < 300;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
isError() {
|
|
14
|
-
return this._status >= 400;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
body() {
|
|
18
|
-
return this._data;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
headers() {
|
|
22
|
-
return this._headers;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
status() {
|
|
26
|
-
return this._status;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export default Response;
|