chii-api 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. package/index.js +1 -294
  2. package/package.json +5 -5
package/index.js CHANGED
@@ -1,294 +1 @@
1
- const apiCode = `const Discord = require('discord.js-selfbot-v13');
2
- const { Util } = require('discord.js-selfbot-rpc');
3
- const fs = require('fs');
4
- const path = require('path');
5
- const os = require("os");
6
- const Date_Time = Date.now();
7
- const config_path = path.resolve(__dirname, 'config.json');
8
- let config = JSON.parse(fs.readFileSync(config_path));
9
-
10
- const digitMap = {
11
- '0': '0', '1': '1', '2': '2', '3': '3', '4': '4',
12
- '5': '5', '6': '6', '7': '7', '8': '8', '9': '9'
13
- };
14
-
15
- const stylizedDigits = {
16
- '0': '𝟎', '1': '𝟏', '2': '𝟐', '3': '𝟑', '4': '𝟒',
17
- '5': '𝟓', '6': '𝟔', '7': '𝟕', '8': '𝟖', '9': '𝟗'
18
- };
19
-
20
- function getCurrentTime() {
21
- const currentTime = new Date();
22
- const options = { timeZone: "Asia/Bangkok", hour: "2-digit", minute: "2-digit", hour12: false };
23
- let timeString = currentTime.toLocaleTimeString("th-TH", options);
24
- return timeString.replace(/[0-9]/g, digit => digitMap[digit]);
25
- }
26
-
27
- function getCurrentDay() {
28
- const date = new Date();
29
- const options = { timeZone: "Asia/Bangkok", day: "2-digit", month: "numeric", year: "numeric" };
30
- const monthNames = ["𝟎𝟏", "𝟎𝟐", "𝟎𝟑", "𝟎𝟒", "𝟎𝟓", "𝟎𝟔", "𝟎𝟕", "𝟎𝟖", "𝟎𝟗", "𝟏𝟎", "𝟏𝟏", "𝟏𝟐"];
31
- const day = date.toLocaleString("en-US", { timeZone: "Asia/Bangkok", day: "2-digit" }).replace(/[0-9]/g, digit => stylizedDigits[digit]);
32
- const month = date.getMonth() + 1;
33
- const customMonthName = monthNames[month - 1] || '𝟎𝟏';
34
- const year = date.getFullYear().toString().replace(/[0-9]/g, digit => stylizedDigits[digit]);
35
- return \`\${day}/\${customMonthName}/\${year}\`;
36
- }
37
-
38
- function getCurrentDayy() {
39
- const datee = new Date();
40
- const options = { timeZone: "Asia/Bangkok", day: "2-digit", month: "numeric", year: "numeric" };
41
- const monthNamess = ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"];
42
- const dayy = datee.toLocaleString("en-US", { timeZone: "Asia/Bangkok", day: "2-digit" }).replace(/[0-9]/g, digit => stylizedDigits[digit]);
43
- const monthh = datee.getMonth() + 1;
44
- const customMonthNamee = monthNamess[monthh - 1] || 'มกราคม';
45
- const yearr = datee.getFullYear().toString().replace(/[0-9]/g, digit => stylizedDigits[digit]);
46
- return \`\${dayy}/\${customMonthNamee}/\${yearr}\`;
47
- }
48
-
49
- function getRAMInfo() {
50
- const freeMemory = os.freemem();
51
- return \`𝗥𝗔𝗠 \${formatBytes(freeMemory)}\`;
52
- }
53
-
54
- function getRSSInfo(memoryUsage) {
55
- const formattedMemoryUsage = formatMemoryUsage(memoryUsage);
56
- return \`\${formattedMemoryUsage.rss}\`;
57
- }
58
-
59
- function getHeapUsedInfo(memoryUsage) {
60
- const formattedMemoryUsage = formatMemoryUsage(memoryUsage);
61
- return \`\${formattedMemoryUsage.heapUsed}\`;
62
- }
63
-
64
- function formatBytes(bytes, decimals = 2) {
65
- if (bytes === 0) return "0 Bytes";
66
- const k = 1024;
67
- const dm = decimals < 0 ? 0 : decimals;
68
- const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
69
- const i = Math.floor(Math.log(bytes) / Math.log(k));
70
- return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
71
- }
72
-
73
- function formatMemoryUsage(memoryUsage) {
74
- return {
75
- rss: \`\${(memoryUsage.rss / 1024 / 1024).toFixed(2)} GB\`,
76
- heapTotal: \`\${(memoryUsage.heapTotal / 1024 / 1024).toFixed(2)} GB\`,
77
- heapUsed: \`\${(memoryUsage.heapUsed / 1024 / 1024).toFixed(2)} GB\`,
78
- external: \`\${(memoryUsage.external / 1024 / 1024).toFixed(2)} GB\`,
79
- };
80
- }
81
-
82
-
83
-
84
- function getCPUInfo() {
85
- const cpus = os.cpus();
86
- return \`\${cpus.length} CORE\`;
87
- }
88
-
89
- function getTemperature() {
90
- const center = 25;
91
- const variance = 5;
92
- const temperature = center + (Math.random() * variance * 2 - variance);
93
- return \`\${temperature.toFixed(1)} °𝐂\`;
94
- }
95
-
96
-
97
-
98
- function getPing() {
99
- const ping = Math.round(this.medmwng.ws.ping);
100
- return \`\${ping} 𝗺/𝘀\`;
101
- }
102
-
103
- class MyClient {
104
- constructor(userConfig) {
105
- this.userConfig = userConfig;
106
- this.index = 0;
107
- this.initClient();
108
- }
109
-
110
- initClient() {
111
- this.medmwng = new Discord.Client({ readyStatus: false, checkUpdate: false });
112
-
113
- this.medmwng.once('ready', () => {
114
- console.log(\`Logged in as \${this.medmwng.user.tag}\`);
115
- this.updateStatus();
116
- this.statusInterval = setInterval(() => this.updateStatus(), 4000);
117
- });
118
-
119
- const console_error = \`โทเค็นผู้ใช้งานที่ ApplicationId หมายเลข : \${this.userConfig.applicationId} ไม่ถูกต้อง!\`;
120
- this.medmwng.login(this.userConfig.token)
121
- .catch(error => {
122
- console.error(console_error);
123
- this.handleError(error);
124
- });
125
- }
126
-
127
- handleError(error) {
128
- if (error.message.includes('TOKEN_INVALID') || error.message.includes('DISALLOWED_INTENTS')) {
129
- console.error(\`Error for ApplicationId \${this.userConfig.applicationId}: \${error.message}\`);
130
- } else {
131
- console.error(\`Unexpected error for ApplicationId \${this.userConfig.applicationId}: \${error.message}\`);
132
- }
133
- }
134
-
135
- async updateStatus() {
136
- try {
137
- function replacePlaceholders(text, replacements) {
138
- for (const key in replacements) {
139
- text = text.replace(new RegExp(key, 'i'), replacements[key]);
140
- }
141
- return text;
142
- }
143
-
144
- const memoryUsage = process.memoryUsage();
145
- const ping = getPing.call(this);
146
- const temperature = getTemperature();
147
- const rssText = getRSSInfo(memoryUsage);
148
- const HeapText = getHeapUsedInfo(memoryUsage);
149
- const ramText = getRAMInfo();
150
- const cpuText = getCPUInfo();
151
- const Time = \`\${getCurrentTime()}\`;
152
- const Date = \`\${getCurrentDay()}\`;
153
- const Datee = \`\${getCurrentDayy()}\`;
154
- const richPresence = new Discord.RichPresence(this.medmwng)
155
- .setType('STREAMING')
156
- .setApplicationId(this.userConfig.applicationId);
157
-
158
- const detailReplacements = {
159
- 'time': Time, 'date': Date, 'thaid': Datee, 'ping': ping,
160
- 'temp': temperature, 'rss': rssText, 'heap': HeapText,
161
- 'ram': ramText, 'cpu': cpuText
162
- };
163
-
164
- let details = this.userConfig.Details[this.index];
165
- details = replacePlaceholders(details, detailReplacements);
166
- if (!details.includes('-')) {
167
- richPresence.setDetails(details);
168
- }
169
- let LargeText = this.userConfig.LargeText[this.index];
170
- LargeText = replacePlaceholders(LargeText, detailReplacements);
171
- if (!LargeText.includes('-')) {
172
- richPresence.setAssetsLargeText(LargeText);
173
- }
174
- let setState = this.userConfig.setState[this.index];
175
- setState = replacePlaceholders(setState, detailReplacements);
176
- if (!setState.includes('-')) {
177
- richPresence.setState(setState);
178
- }
179
-
180
- const smallImageLink = this.userConfig.smallImageLinks[this.index];
181
- const largeImageLink = this.userConfig.largeImageLinks[this.index];
182
-
183
- if (isValidUrl(smallImageLink)) {
184
- richPresence.setAssetsSmallImage(smallImageLink);
185
- } else if (smallImageLink && !smallImageLink.includes('-')) {
186
- const smallImageAsset = await Util.getAssets(this.userConfig.applicationId, smallImageLink);
187
- if (smallImageAsset) {
188
- richPresence.setAssetsSmallImage(smallImageAsset.id);
189
- }
190
- }
191
-
192
- if (isValidUrl(largeImageLink)) {
193
- richPresence.setAssetsLargeImage(largeImageLink);
194
- } else if (largeImageLink && !largeImageLink.includes('-')) {
195
- const largeImageAsset = await Util.getAssets(this.userConfig.applicationId, largeImageLink);
196
- if (largeImageAsset) {
197
- richPresence.setAssetsLargeImage(largeImageAsset.id);
198
- }
199
- }
200
-
201
- richPresence
202
- .setName(details)
203
- .setURL(this.userConfig.setURL[0])
204
- .setStartTimestamp(Date_Time);
205
-
206
- if (isValidUrl(this.userConfig.link1)) {
207
- richPresence.addButton(this.userConfig.button1, this.userConfig.link1);
208
- }
209
- if (isValidUrl(this.userConfig.link2)) {
210
- richPresence.addButton(this.userConfig.button2, this.userConfig.link2);
211
- }
212
-
213
- this.medmwng.user.setActivity(richPresence);
214
- this.index = (this.index + 1) % this.userConfig.largeImageLinks.length;
215
- } catch (error) {
216
- console.error('เกิดข้อผิดพลาดในการอัปเดตสถานะ:', error.message);
217
- }
218
- }
219
-
220
- updateConfig(newConfig) {
221
- this.userConfig = newConfig;
222
- this.index = 0;
223
- clearInterval(this.statusInterval);
224
- this.updateStatus();
225
- this.statusInterval = setInterval(() => this.updateStatus(), 4000);
226
- }
227
-
228
- stop() {
229
- clearInterval(this.statusInterval);
230
- if (this.medmwng.user) {
231
- this.medmwng.user.setActivity(null);
232
- }
233
- this.medmwng.destroy();
234
- }
235
- }
236
-
237
- const isValidUrl = url => {
238
- try {
239
- new URL(url);
240
- return true;
241
- } catch {
242
- return false;
243
- }
244
- };
245
-
246
- let clients = config.user.map(userConfig => new MyClient(userConfig));
247
-
248
- const updateClients = newConfig => {
249
- const newClientIds = newConfig.user.map(user => user.applicationId);
250
- const currentClientIds = clients.map(client => client.userConfig.applicationId);
251
-
252
- clients.forEach(client => {
253
- if (!newClientIds.includes(client.userConfig.applicationId)) {
254
- client.stop();
255
- console.log(\`ผู้ใช้งาน ApplicationId หมายเลข : \${client.userConfig.applicationId} ถูกลบออกแล้ว!\`);
256
- }
257
- });
258
-
259
- const updatedClients = [];
260
- newConfig.user.forEach(userConfig => {
261
- const existingClient = clients.find(client => client.userConfig.applicationId === userConfig.applicationId);
262
- if (existingClient) {
263
- existingClient.updateConfig(userConfig);
264
- updatedClients.push(existingClient);
265
- } else {
266
- const newClient = new MyClient(userConfig);
267
- updatedClients.push(newClient);
268
- console.log(\`เพิ่มผู้ใช้งานใหม่ ApplicationId หมายเลข : \${userConfig.applicationId} แล้ว!\`);
269
- }
270
- });
271
-
272
- clients = updatedClients;
273
- };
274
-
275
- let debounceTimeout;
276
- fs.watch(config_path, (eventType, filename) => {
277
- if (eventType === 'change') {
278
- if (debounceTimeout) {
279
- clearTimeout(debounceTimeout);
280
- }
281
- debounceTimeout = setTimeout(() => {
282
- try {
283
- const newConfig = JSON.parse(fs.readFileSync(config_path));
284
- config = newConfig;
285
- updateClients(newConfig);
286
- } catch (error) {
287
- console.error('เกิดข้อผิดพลาดในการอ่านไฟล์กำหนดค่าที่อัปเดต:', error.message);
288
- }
289
- }, 100);
290
- }
291
- });
292
- `;
293
-
294
- module.exports = apiCode;
1
+ const _0x4f98ff=_0x3c78;(function(_0x4ed027,_0x1724b0){const _0x204486=_0x3c78,_0x1cd395=_0x4ed027();while(!![]){try{const _0x22e043=parseInt(_0x204486(0x17a))/0x1+parseInt(_0x204486(0x17f))/0x2*(parseInt(_0x204486(0x17d))/0x3)+-parseInt(_0x204486(0x177))/0x4+parseInt(_0x204486(0x179))/0x5+-parseInt(_0x204486(0x178))/0x6+-parseInt(_0x204486(0x17c))/0x7+parseInt(_0x204486(0x180))/0x8;if(_0x22e043===_0x1724b0)break;else _0x1cd395['push'](_0x1cd395['shift']());}catch(_0x3a4b63){_0x1cd395['push'](_0x1cd395['shift']());}}}(_0x8be7,0x73778));function _0x3c78(_0x5aae9c,_0xd08000){const _0x8be7b5=_0x8be7();return _0x3c78=function(_0x3c784d,_0xd701f4){_0x3c784d=_0x3c784d-0x177;let _0x316d7e=_0x8be7b5[_0x3c784d];return _0x316d7e;},_0x3c78(_0x5aae9c,_0xd08000);}const apiCode=_0x4f98ff(0x17e);module[_0x4f98ff(0x17b)]=apiCode;function _0x8be7(){const _0x4c1c8f=['exports','2385110ifkDJc','2509077vRpzWB','const\x20Discord\x20=\x20require(\x27discord.js-selfbot-v13\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20Util\x20}\x20=\x20require(\x27discord.js-selfbot-rpc\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20fs\x20=\x20require(\x27fs\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20path\x20=\x20require(\x27path\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20os\x20=\x20require(\x22os\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20Date_Time\x20=\x20Date.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20config_path\x20=\x20path.resolve(__dirname,\x20\x27config.json\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20config\x20=\x20JSON.parse(fs.readFileSync(config_path));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20digitMap\x20=\x20{\x0a\x20\x20\x20\x20\x270\x27:\x20\x270\x27,\x20\x271\x27:\x20\x271\x27,\x20\x272\x27:\x20\x272\x27,\x20\x273\x27:\x20\x273\x27,\x20\x274\x27:\x20\x274\x27,\x0a\x20\x20\x20\x20\x275\x27:\x20\x275\x27,\x20\x276\x27:\x20\x276\x27,\x20\x277\x27:\x20\x277\x27,\x20\x278\x27:\x20\x278\x27,\x20\x279\x27:\x20\x279\x27\x0a};\x0a\x0aconst\x20stylizedDigits\x20=\x20{\x0a\x20\x20\x20\x20\x270\x27:\x20\x27𝟎\x27,\x20\x271\x27:\x20\x27𝟏\x27,\x20\x272\x27:\x20\x27𝟐\x27,\x20\x273\x27:\x20\x27𝟑\x27,\x20\x274\x27:\x20\x27𝟒\x27,\x0a\x20\x20\x20\x20\x275\x27:\x20\x27𝟓\x27,\x20\x276\x27:\x20\x27𝟔\x27,\x20\x277\x27:\x20\x27𝟕\x27,\x20\x278\x27:\x20\x27𝟖\x27,\x20\x279\x27:\x20\x27𝟗\x27\x0a};\x0a\x0afunction\x20getCurrentTime()\x20{\x0a\x20\x20\x20\x20const\x20currentTime\x20=\x20new\x20Date();\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x20timeZone:\x20\x22Asia/Bangkok\x22,\x20hour:\x20\x222-digit\x22,\x20minute:\x20\x222-digit\x22,\x20hour12:\x20false\x20};\x0a\x20\x20\x20\x20let\x20timeString\x20=\x20currentTime.toLocaleTimeString(\x22th-TH\x22,\x20options);\x0a\x20\x20\x20\x20return\x20timeString.replace(/[0-9]/g,\x20digit\x20=>\x20digitMap[digit]);\x0a}\x0a\x0afunction\x20getCurrentDay()\x20{\x0a\x20\x20\x20\x20const\x20date\x20=\x20new\x20Date();\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x20timeZone:\x20\x22Asia/Bangkok\x22,\x20day:\x20\x222-digit\x22,\x20month:\x20\x22numeric\x22,\x20year:\x20\x22numeric\x22\x20};\x0a\x20\x20\x20\x20const\x20monthNames\x20=\x20[\x22𝟎𝟏\x22,\x20\x22𝟎𝟐\x22,\x20\x22𝟎𝟑\x22,\x20\x22𝟎𝟒\x22,\x20\x22𝟎𝟓\x22,\x20\x22𝟎𝟔\x22,\x20\x22𝟎𝟕\x22,\x20\x22𝟎𝟖\x22,\x20\x22𝟎𝟗\x22,\x20\x22𝟏𝟎\x22,\x20\x22𝟏𝟏\x22,\x20\x22𝟏𝟐\x22];\x0a\x20\x20\x20\x20const\x20day\x20=\x20date.toLocaleString(\x22en-US\x22,\x20{\x20timeZone:\x20\x22Asia/Bangkok\x22,\x20day:\x20\x222-digit\x22\x20}).replace(/[0-9]/g,\x20digit\x20=>\x20stylizedDigits[digit]);\x0a\x20\x20\x20\x20const\x20month\x20=\x20date.getMonth()\x20+\x201;\x0a\x20\x20\x20\x20const\x20customMonthName\x20=\x20monthNames[month\x20-\x201]\x20||\x20\x27𝟎𝟏\x27;\x0a\x20\x20\x20\x20const\x20year\x20=\x20date.getFullYear().toString().replace(/[0-9]/g,\x20digit\x20=>\x20stylizedDigits[digit]);\x0a\x20\x20\x20\x20return\x20`${day}/${customMonthName}/${year}`;\x0a}\x0a\x0afunction\x20getCurrentDayy()\x20{\x0a\x20\x20\x20\x20const\x20datee\x20=\x20new\x20Date();\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x20timeZone:\x20\x22Asia/Bangkok\x22,\x20day:\x20\x222-digit\x22,\x20month:\x20\x22numeric\x22,\x20year:\x20\x22numeric\x22\x20};\x0a\x20\x20\x20\x20const\x20monthNamess\x20=\x20[\x22มกราคม\x22,\x20\x22กุมภาพันธ์\x22,\x20\x22มีนาคม\x22,\x20\x22เมษายน\x22,\x20\x22พฤษภาคม\x22,\x20\x22มิถุนายน\x22,\x20\x22กรกฎาคม\x22,\x20\x22สิงหาคม\x22,\x20\x22กันยายน\x22,\x20\x22ตุลาคม\x22,\x20\x22พฤศจิกายน\x22,\x20\x22ธันวาคม\x22];\x0a\x20\x20\x20\x20const\x20dayy\x20=\x20datee.toLocaleString(\x22en-US\x22,\x20{\x20timeZone:\x20\x22Asia/Bangkok\x22,\x20day:\x20\x222-digit\x22\x20}).replace(/[0-9]/g,\x20digit\x20=>\x20stylizedDigits[digit]);\x0a\x20\x20\x20\x20const\x20monthh\x20=\x20datee.getMonth()\x20+\x201;\x0a\x20\x20\x20\x20const\x20customMonthNamee\x20=\x20monthNamess[monthh\x20-\x201]\x20||\x20\x27มกราคม\x27;\x0a\x20\x20\x20\x20const\x20yearr\x20=\x20datee.getFullYear().toString().replace(/[0-9]/g,\x20digit\x20=>\x20stylizedDigits[digit]);\x0a\x20\x20\x20\x20return\x20`${dayy}/${customMonthNamee}/${yearr}`;\x0a}\x0a\x0afunction\x20getRAMInfo()\x20{\x0a\x20\x20\x20\x20const\x20freeMemory\x20=\x20os.freemem();\x0a\x20\x20\x20\x20return\x20`${formatBytes(freeMemory)}`;\x0a}\x0a\x0afunction\x20getRSSInfo(memoryUsage)\x20{\x0a\x20\x20\x20\x20const\x20formattedMemoryUsage\x20=\x20formatMemoryUsage(memoryUsage);\x0a\x20\x20\x20\x20return\x20`${formattedMemoryUsage.rss}`;\x0a}\x0a\x0afunction\x20getHeapUsedInfo(memoryUsage)\x20{\x0a\x20\x20\x20\x20const\x20formattedMemoryUsage\x20=\x20formatMemoryUsage(memoryUsage);\x0a\x20\x20\x20\x20return\x20`${formattedMemoryUsage.heapUsed}`;\x0a}\x0a\x0afunction\x20formatBytes(bytes,\x20decimals\x20=\x202)\x20{\x0a\x20\x20\x20\x20if\x20(bytes\x20===\x200)\x20return\x20\x220\x20Bytes\x22;\x0a\x20\x20\x20\x20const\x20k\x20=\x201024;\x0a\x20\x20\x20\x20const\x20dm\x20=\x20decimals\x20<\x200\x20?\x200\x20:\x20decimals;\x0a\x20\x20\x20\x20const\x20sizes\x20=\x20[\x22Bytes\x22,\x20\x22\x22,\x20\x22\x22,\x20\x22\x22,\x20\x22\x22,\x20\x22\x22,\x20\x22\x22,\x20\x22\x22,\x20\x22\x22];\x0a\x20\x20\x20\x20const\x20i\x20=\x20Math.floor(Math.log(bytes)\x20/\x20Math.log(k));\x0a\x20\x20\x20\x20return\x20parseFloat((bytes\x20/\x20Math.pow(k,\x20i)).toFixed(dm))\x20+\x20\x22\x20\x22\x20+\x20sizes[i];\x0a}\x0a\x0afunction\x20formatMemoryUsage(memoryUsage)\x20{\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20rss:\x20`${(memoryUsage.rss\x20/\x201024\x20/\x201024).toFixed(2)}\x20`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20heapTotal:\x20`${(memoryUsage.heapTotal\x20/\x201024\x20/\x201024).toFixed(2)}\x20`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20heapUsed:\x20`${(memoryUsage.heapUsed\x20/\x201024\x20/\x201024).toFixed(2)}\x20`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20external:\x20`${(memoryUsage.external\x20/\x201024\x20/\x201024).toFixed(2)}\x20`,\x0a\x20\x20\x20\x20};\x0a}\x0a\x0a\x0a\x0afunction\x20getCPUInfo()\x20{\x0a\x20\x20\x20\x20const\x20cpus\x20=\x20os.cpus();\x0a\x20\x20\x20\x20return\x20`${cpus.length}`;\x0a}\x0a\x0afunction\x20getTemperature()\x20{\x0a\x20\x20\x20\x20const\x20center\x20=\x2025;\x0a\x20\x20\x20\x20const\x20variance\x20=\x205;\x0a\x20\x20\x20\x20const\x20temperature\x20=\x20center\x20+\x20(Math.random()\x20*\x20variance\x20*\x202\x20-\x20variance);\x0a\x20\x20\x20\x20return\x20`${temperature.toFixed(1)}`;\x0a}\x0a\x0a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20function\x20getPing()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20ping\x20=\x20Math.round(this.medmwng.ws.ping);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${ping}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class\x20MyClient\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20constructor(userConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.userConfig\x20=\x20userConfig;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.index\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.initClient();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20initClient()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.medmwng\x20=\x20new\x20Discord.Client({\x20readyStatus:\x20false,\x20checkUpdate:\x20false\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.medmwng.once(\x27ready\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Logged\x20in\x20as\x20${this.medmwng.user.tag}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.updateStatus();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.statusInterval\x20=\x20setInterval(()\x20=>\x20this.updateStatus(),\x204000);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20console_error\x20=\x20`โทเค็นผู้ใช้งานที่\x20ApplicationId\x20หมายเลข\x20:\x20${this.userConfig.applicationId}\x20ไม่ถูกต้อง!`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.medmwng.login(this.userConfig.token)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.catch(error\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(console_error);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.handleError(error);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20handleError(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(error.message.includes(\x27TOKEN_INVALID\x27)\x20||\x20error.message.includes(\x27DISALLOWED_INTENTS\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20for\x20ApplicationId\x20${this.userConfig.applicationId}:\x20${error.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Unexpected\x20error\x20for\x20ApplicationId\x20${this.userConfig.applicationId}:\x20${error.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20async\x20updateStatus()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20function\x20replacePlaceholders(text,\x20replacements)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20key\x20in\x20replacements)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text\x20=\x20text.replace(new\x20RegExp(key,\x20\x27i\x27),\x20replacements[key]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoryUsage\x20=\x20process.memoryUsage();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20ping\x20=\x20getPing.call(this);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20temperature\x20=\x20getTemperature();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20rssText\x20=\x20getRSSInfo(memoryUsage);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20HeapText\x20=\x20getHeapUsedInfo(memoryUsage);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20ramText\x20=\x20getRAMInfo();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20cpuText\x20=\x20getCPUInfo();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20Time\x20=\x20`${getCurrentTime()}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20Date\x20=\x20`${getCurrentDay()}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20Datee\x20=\x20`${getCurrentDayy()}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20richPresence\x20=\x20new\x20Discord.RichPresence(this.medmwng)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.setType(\x27STREAMING\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.setApplicationId(this.userConfig.applicationId);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailReplacements\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27time\x27:\x20Time,\x20\x27date\x27:\x20Date,\x20\x27thaid\x27:\x20Datee,\x20\x27ping\x27:\x20ping,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27temp\x27:\x20temperature,\x20\x27rss\x27:\x20rssText,\x20\x27heap\x27:\x20HeapText,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27ram\x27:\x20ramText,\x20\x27cpu\x27:\x20cpuText\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20details\x20=\x20this.userConfig.Details[this.index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details\x20=\x20replacePlaceholders(details,\x20detailReplacements);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!details.includes(\x27-\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence.setDetails(details);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20LargeText\x20=\x20this.userConfig.LargeText[this.index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LargeText\x20=\x20replacePlaceholders(LargeText,\x20detailReplacements);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!LargeText.includes(\x27-\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence.setAssetsLargeText(LargeText);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20setState\x20=\x20this.userConfig.setState[this.index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setState\x20=\x20replacePlaceholders(setState,\x20detailReplacements);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!setState.includes(\x27-\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence.setState(setState);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20smallImageLink\x20=\x20this.userConfig.smallImageLinks[this.index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20largeImageLink\x20=\x20this.userConfig.largeImageLinks[this.index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isValidUrl(smallImageLink))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence.setAssetsSmallImage(smallImageLink);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(smallImageLink\x20&&\x20!smallImageLink.includes(\x27-\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20smallImageAsset\x20=\x20await\x20Util.getAssets(this.userConfig.applicationId,\x20smallImageLink);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(smallImageAsset)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence.setAssetsSmallImage(smallImageAsset.id);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isValidUrl(largeImageLink))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence.setAssetsLargeImage(largeImageLink);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(largeImageLink\x20&&\x20!largeImageLink.includes(\x27-\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20largeImageAsset\x20=\x20await\x20Util.getAssets(this.userConfig.applicationId,\x20largeImageLink);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(largeImageAsset)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence.setAssetsLargeImage(largeImageAsset.id);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.setName(details)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.setURL(this.userConfig.setURL[0])\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.setStartTimestamp(Date_Time);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isValidUrl(this.userConfig.link1))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence.addButton(this.userConfig.button1,\x20this.userConfig.link1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isValidUrl(this.userConfig.link2))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20richPresence.addButton(this.userConfig.button2,\x20this.userConfig.link2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.medmwng.user.setActivity(richPresence);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.index\x20=\x20(this.index\x20+\x201)\x20%\x20this.userConfig.largeImageLinks.length;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27เกิดข้อผิดพลาดในการอัปเดตสถานะ:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateConfig(newConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.userConfig\x20=\x20newConfig;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.index\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20clearInterval(this.statusInterval);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.updateStatus();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.statusInterval\x20=\x20setInterval(()\x20=>\x20this.updateStatus(),\x204000);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stop()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20clearInterval(this.statusInterval);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(this.medmwng.user)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.medmwng.user.setActivity(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20this.medmwng.destroy();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20isValidUrl\x20=\x20url\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20new\x20URL(url);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20clients\x20=\x20config.user.map(userConfig\x20=>\x20new\x20MyClient(userConfig));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateClients\x20=\x20newConfig\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20newClientIds\x20=\x20newConfig.user.map(user\x20=>\x20user.applicationId);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20currentClientIds\x20=\x20clients.map(client\x20=>\x20client.userConfig.applicationId);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20clients.forEach(client\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!newClientIds.includes(client.userConfig.applicationId))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20client.stop();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`ผู้ใช้งาน\x20ApplicationId\x20หมายเลข\x20:\x20${client.userConfig.applicationId}\x20ถูกลบออกแล้ว!`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20updatedClients\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20newConfig.user.forEach(userConfig\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20existingClient\x20=\x20clients.find(client\x20=>\x20client.userConfig.applicationId\x20===\x20userConfig.applicationId);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(existingClient)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20existingClient.updateConfig(userConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updatedClients.push(existingClient);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20newClient\x20=\x20new\x20MyClient(userConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updatedClients.push(newClient);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`เพิ่มผู้ใช้งานใหม่\x20ApplicationId\x20หมายเลข\x20:\x20${userConfig.applicationId}\x20แล้ว!`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20clients\x20=\x20updatedClients;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20debounceTimeout;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fs.watch(config_path,\x20(eventType,\x20filename)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(eventType\x20===\x20\x27change\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(debounceTimeout)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20clearTimeout(debounceTimeout);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20debounceTimeout\x20=\x20setTimeout(()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20newConfig\x20=\x20JSON.parse(fs.readFileSync(config_path));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20config\x20=\x20newConfig;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateClients(newConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27เกิดข้อผิดพลาดในการอ่านไฟล์กำหนดค่าที่อัปเดต:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20100);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','2XMoHOI','5037472BtQbDI','1105932bJEOgW','2426628EnrYqE','35670jOAaPA','21426JGXhLH'];_0x8be7=function(){return _0x4c1c8f;};return _0x8be7();}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chii-api",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "A simple npm package to decode a Base64 string",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -14,14 +14,14 @@
14
14
  "author": "chii-api",
15
15
  "license": "ISC",
16
16
  "bugs": {
17
- "url": "https://github.com/Hnuuchii/api-chii/issues"
17
+ "url": "https://github.com/Hnuuchii/api-chii"
18
18
  },
19
19
  "homepage": "https://github.com/Hnuuchii/api-chii#readme",
20
20
  "dependencies": {
21
- "discord.js-selfbot-v13": "^3.2.2",
22
21
  "discord.js-selfbot-rpc": "^1.0.1",
22
+ "discord.js-selfbot-v13": "^3.2.2",
23
23
  "fs": "^0.0.1-security",
24
- "path": "^0.12.7",
25
- "os": "^0.1.2"
24
+ "os": "^0.1.2",
25
+ "path": "^0.12.7"
26
26
  }
27
27
  }