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.
- package/index.js +1 -294
- 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.
|
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
|
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
|
-
"
|
25
|
-
"
|
24
|
+
"os": "^0.1.2",
|
25
|
+
"path": "^0.12.7"
|
26
26
|
}
|
27
27
|
}
|