Skip to content

Commit 4d018f1

Browse files
authored
pokok update mwehehe
Signed-off-by: Farhannnnn <[email protected]>
1 parent 380d89e commit 4d018f1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+914
-511
lines changed

commands/Downloader/Instagram-story.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default {
88
usage: '%cmd% url/username story Instagram',
99
execute: async ({ xcoders, x, m, query, styleMessage, errorMessage, waitingMessage, apikeys, regex, host, getMessage, getJson, addHitCommand }) => {
1010
try {
11-
const serialize = regex.isUrl(query) ? { query: 'url', path: 'ig-stories' } : { query: 'username', path: 'ig-story' };
11+
const serialize = regex.url(query) ? { query: 'url', path: 'ig-stories' } : { query: 'username', path: 'ig-story' };
1212
const data = await getJson(`${host}/api/download/${serialize.path}?${serialize.query}=${query}&apikey=${apikeys}`);
1313
if (!data.status || data.result.data.length < 1) return errorMessage(m.chat, getMessage(data), 'Instagram Story');
1414
await waitingMessage(m.chat);

commands/Downloader/YouTube-play.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
'use strict';
2+
3+
export default {
4+
views: ['ytplay < query >'], // view for message in menu
5+
command: /^(yt)?play$/i, //another command.
6+
description: 'Download music from YouTube Play',
7+
query: true,
8+
text: true,
9+
usage: '%cmd% monolog pamungkas',
10+
execute: async ({ xcoders, x, m, query, styleMessage, errorMessage, waitingMessage, canvas, getMessage, parseResult, getBuffer, addHitCommand, getJson, host, apikeys }) => {
11+
try {
12+
const data = await getJson(`${host}/api/download/play-mp3?query=${query}&apikey=${apikeys}`);
13+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'YouTube Play');
14+
await waitingMessage(m.chat);
15+
const parseCaption = parseResult(data);
16+
const caption = styleMessage('YouTube Play Downloader', parseCaption);
17+
const canvasThumbnail = await canvas.create('YouTube Play Downloder');
18+
const thumbnail = await getBuffer(data.result.thumbnail);
19+
await xcoders.sendMessage(m.chat, { image: canvasThumbnail, caption, contextInfo: { forwardingScore: 9999999, isForwarded: true } }, { quoted: x });
20+
addHitCommand('YouTube Play', true);
21+
return xcoders.sendAudioFromUrl(m.chat, data.result.url, x, { fileName: data.result.title + '.mp3', title: data.result.title, thumbnail, source: query, stream: true });
22+
} catch (error) {
23+
return errorMessage(m.chat, error, 'YouTube Play');
24+
}
25+
}
26+
};

commands/Downloader/apkdl.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export default {
77
query: true,
88
url: true,
99
usage: '%cmd% url apk-dl.com',
10-
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, apikeys, regex, host }, { getMessage, parseResult, getJson, addHitCommand }) => {
10+
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, waitingMessage, apikeys, regex, host, getMessage, parseResult, getJson, addHitCommand }) => {
1111
try {
1212
if (!regex.media(query)) return invalidUrlMessage(m.chat);
1313
const data = await getJson(`${host}/api/download/apkdl?url=${query}&apikey=${apikeys}`);
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('Apkdl Files Downloader', result);
1818
addHitCommand('Apkdl Downloader', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { name: data.result.title });
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'Apkdl Downloader');
2222
}

commands/Downloader/capcut.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('Capcut Video Downloader', result);
1818
addHitCommand('Capcut', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x);
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'Capcut');
2222
}

commands/Downloader/cocofun.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export default {
1818
const result = parseResult(data.result);
1919
const caption = styleMessage('Cocofun Video Downloader', result);
2020
addHitCommand('Cocofun', true);
21-
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
21+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x);
2222
} catch (error) {
2323
return errorMessage(m.chat, error, 'Cocofun');
2424
}

commands/Downloader/facebook-reels.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'use strict';
2+
3+
export default {
4+
views: ['fbreels < url >'], // view for message in menu
5+
command: /^fbree?ls?$/i, //another command.
6+
description: 'Download video reels from Facebook Url',
7+
query: true,
8+
url: true,
9+
usage: '%cmd% url reels facebook',
10+
execute: async ({ xcoders, x, m, query, styleMessage, errorMessage, waitingMessage, apikeys, host, getMessage, parseResult, getJson, addHitCommand }) => {
11+
try {
12+
const data = await getJson(`${host}/api/download/fb-reels?url=${query}&apikey=${apikeys}`);
13+
if (!data.status) return errorMessage(m.chat, getMessage(data), 'Facebook Reels Downloader');
14+
await waitingMessage(m.chat);
15+
const result = parseResult(data.result);
16+
const caption = styleMessage('Facebook Reels Downloader', result);
17+
addHitCommand('Facebook Reels Downloader', true);
18+
return xcoders.sendFileFromUrl(m.chat, data.result.data[0].url, caption, x);
19+
} catch (error) {
20+
return errorMessage(m.chat, error, 'Facebook Reels Downloader');
21+
}
22+
}
23+
};

commands/Downloader/facebook.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('Facebook Video Downloader', result);
1818
addHitCommand('Facebook Downloader', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.data[0].url, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.data[0].url, caption, x);
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'Facebook Downloader');
2222
}

commands/Downloader/ifunny.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default {
1919
const result = parseResult({ ...data.result.title, metadata });
2020
const caption = styleMessage('Ifunny Video Downloader', result);
2121
addHitCommand('Ifunny', true);
22-
return xcoders.sendFileFromUrl(m.chat, metadata.url, caption, x, { thumbnail: null });
22+
return xcoders.sendFileFromUrl(m.chat, metadata.url, caption, x);
2323
} catch (error) {
2424
return errorMessage(m.chat, error, 'Ifunny');
2525
}

commands/Downloader/imdb.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('IMDB Video Downloader', result);
1818
addHitCommand('IMDB Downloader', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.data[0].url, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.data[0].url, caption, x);
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'IMDB Downloader');
2222
}

commands/Downloader/likee.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('Likee Video Downloader', result);
1818
addHitCommand('Likee', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.nowatermark, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.nowatermark, caption, x);
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'Likee');
2222
}

commands/Downloader/mediafire.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('Mediafire Downloader', result);
1818
addHitCommand('Mediafire Downloader', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x);
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'Mediafire Downloader');
2222
}

commands/Downloader/pinterest.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
'use strict';
22

33
export default {
4-
views: ['pinterest < url >'], // view for message in menu
5-
command: /^(pin(|dl|down)|pinterest)$/i, //another command.
4+
views: ['pindl < url >'], // view for message in menu
5+
command: /^(pin(|dl|down))$/i, //another command.
66
description: 'Download video from Pinterest Url',
77
query: true,
88
url: true,
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('Pinterest Video Downloader', result);
1818
addHitCommand('Pinterest Downloader', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x);
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'Pinterest Downloader');
2222
}

commands/Downloader/sfile.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('Sfile Downloader', result);
1818
addHitCommand('Sfile Downloader', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x);
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'Sfile Downloader');
2222
}

commands/Downloader/tiktok.js

+31-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
'use strict';
22

3+
import fs from "fs";
4+
import path from "path";
5+
import { execSync } from "child_process";
6+
import { fileTypeFromBuffer } from "file-type";
7+
38
export default {
49
views: ['tiktok < url > --flag'], // view for message in menu
510
command: /^(ttdl|tiktok|tt)$/i, //another command.
611
description: 'Download media from Tiktok Url',
712
query: true,
813
url: true,
914
usage: '%cmd% url tiktok --wm or --nowm\nFlag --wm untuk video dengan watermark.\nFlag --nowm untuk video tanpa watermark.',
10-
execute: async ({ xcoders, x, m, query, styleMessage, invalidUrlMessage, errorMessage, replyMessage, waitingMessage, apikeys, regex, host, getMessage, parseResult, getJson, addHitCommand }) => {
15+
execute: async ({ xcoders, x, m, query, styleMessage, errorMessage, waitingMessage, replyMessage, apikeys, host, getMessage, parseResult, getJson, addHitCommand, convertToBuffer, getRandom, zipFolder, invalidUrlMessage, regex }) => {
1116
try {
1217
if (!regex.media(query)) return invalidUrlMessage(m.chat);
1318
let flag = null;
@@ -25,9 +30,32 @@ export default {
2530
const caption = styleMessage('Tiktok Media Downloader', result);
2631
addHitCommand('Tiktok Downloader', true);
2732
if (data.result?.result_url) {
28-
for (let { display_image } of data.result.result_url) {
29-
await xcoders.sendFileFromUrl(m.chat, display_image.url_list[1], caption, x);
33+
await replyMessage('*_Success convert to file zip..._*', 'success');
34+
const pathFolder = path.join(process.cwd(), `tiktok_result_${Date.now()}`);
35+
const pathZip = path.join(process.cwd(), 'temp', 'tiktok_result_images.zip');
36+
37+
if (!fs.existsSync(pathFolder)) fs.mkdirSync(pathFolder);
38+
if (!fs.existsSync(path.join(pathFolder, 'photos'))) fs.mkdirSync(path.join(pathFolder, 'photos'));
39+
if (!fs.existsSync(path.join(pathFolder, 'music'))) fs.mkdirSync(path.join(pathFolder, 'music'));
40+
41+
const musicBuffer = await fetch(data.result.music_url).then(async (response) => convertToBuffer(await response.arrayBuffer()));
42+
await fs.promises.writeFile(path.join(pathFolder, 'music', `${data.result.music_info.title}.mp3`), musicBuffer);
43+
for await (let { display_image } of data.result.result_url) {
44+
const buffer = await fetch(display_image.url_list[1]).then(response => response.arrayBuffer());
45+
const result = convertToBuffer(buffer);
46+
await fs.promises.writeFile(path.join(pathFolder, 'photos', getRandom('.jpeg')), result);
3047
}
48+
zipFolder(pathFolder, pathZip, async function (error, message) {
49+
if (error) {
50+
console.error(error);
51+
return errorMessage(m.chat, null, 'Tiktok Downloader');
52+
}
53+
const responseResult = await fs.promises.readFile(pathZip);
54+
const type = await fileTypeFromBuffer(responseResult);
55+
execSync(`rm -r "${pathFolder}"`);
56+
if (fs.existsSync(pathZip)) await fs.promises.unlink(pathZip);
57+
return xcoders.sendMessage(m.chat, { document: responseResult, caption: message, jpegThumbnail: global.icon, mimetype: type.mime, fileName: getRandom(type.ext), contextInfo: { forwardingScore: 9999999, isForwarded: true } }, { quoted: x });
58+
});
3159
} else {
3260
return xcoders.sendFileFromUrl(m.chat, data.result[flag], caption, x);
3361
}

commands/Downloader/twitter.js

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export default {
1919
for (let { url } of data.result.data) {
2020
await xcoders.sendFileFromUrl(m.chat, url, caption, x);
2121
}
22+
return true;
2223
} catch (error) {
2324
return errorMessage(m.chat, error, 'Twitter Downloader');
2425
}

commands/Downloader/xnxx.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('Xnxx Downloader', result);
1818
addHitCommand('Xnxx Downloader', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x);
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'Xnxx Downloader');
2222
}

commands/Downloader/xvideos.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default {
1616
const result = parseResult(data.result);
1717
const caption = styleMessage('Xvideos Video Downloader', result);
1818
addHitCommand('Xvideos Downloader', true);
19-
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x, { thumbnail: null });
19+
return xcoders.sendFileFromUrl(m.chat, data.result.url, caption, x);
2020
} catch (error) {
2121
return errorMessage(m.chat, error, 'Xvideos Downloader');
2222
}

commands/Maker/chatBubble.js

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'use strict';
2+
3+
export default {
4+
views: ['chat < text >'], // view for message in menu
5+
command: /^s?chat$/i, //another command.
6+
description: 'Create chat Bubble images',
7+
usage: '%cmd% xcoders',
8+
query: true,
9+
execute: async ({ xcoders, m, x, apikeys, query, waitingMessage, errorMessage, host, getBuffer, createSticker, quoted, addHitCommand }) => {
10+
try {
11+
const number = quoted.sender.split('@')[0];
12+
const data = await getBuffer(`${host}/api/maker/chat-bubble?text=${query}&nickname=${quoted.pushName || 'unknown'}&number=${number}&apikey=${apikeys}`);
13+
const result = await createSticker(data, {});
14+
await waitingMessage(m.chat);
15+
addHitCommand('Chat Bubble Maker', true);
16+
return xcoders.sendMessage(m.chat, { sticker: result, caption: response.success, contextInfo: { forwardingScore: 9999999, isForwarded: true } }, { quoted: x });
17+
} catch (error) {
18+
return errorMessage(m.chat, error, 'Chat Bubble Maker');
19+
}
20+
}
21+
};

commands/Maker/kannagen.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
'use strict';
22

33
export default {
4-
views: ['kannagen < text >'], // view for message in menu
5-
command: /^kann?agen$/i, //another command.
4+
views: ['kannagen < text >', 'skannagen < text >'], // view for message in menu
5+
command: /^s?kann?agen$/i, //another command.
66
description: 'Create Kannagen quotes images',
77
usage: '%cmd% xcoders',
88
query: true,
99
text: true,
10-
execute: async ({ xcoders, m, x, apikeys, query, waitingMessage, errorMessage, host, getJson, addHitCommand }) => {
10+
execute: async ({ xcoders, command, m, x, apikeys, query, waitingMessage, errorMessage, host, getBuffer, createSticker, addHitCommand }) => {
1111
try {
12-
const data = await getJson(`${host}/api/maker/kannagen?text=${query}&result_type=json&apikey=${apikeys}`);
13-
if (data.status) return errorMessage(m.chat, null, 'Kannagen Maker');
14-
const result = Buffer.from(data);
12+
const data = await getBuffer(`${host}/api/maker/kannagen?text=${query}&apikey=${apikeys}`);
13+
const response = command.startsWith('s') ? await createSticker(data, {}) : data;
14+
const content = command.startsWith('s') ? 'sticker' : 'image';
1515
await waitingMessage(m.chat);
1616
addHitCommand('Kannagen Maker', true);
17-
return xcoders.sendMessage(m.chat, { image: result, caption: response.success, contextInfo: { forwardingScore: 9999999, isForwarded: true } }, { quoted: x });
17+
return xcoders.sendMessage(m.chat, { [content]: response, caption: response.success, contextInfo: { forwardingScore: 9999999, isForwarded: true } }, { quoted: x });
1818
} catch (error) {
1919
return errorMessage(m.chat, error, 'Kannagen Maker');
2020
}

commands/Maker/meme.js

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'use strict';
2+
3+
import formData from 'form-data';
4+
5+
export default {
6+
views: ['smeme < text|text >'], // view for message in menu
7+
command: /^smeme$/i, //another command.
8+
description: 'Create Sticker Meme Generate',
9+
usage: '%cmd% Reply Images and try again',
10+
media: true,
11+
query: true,
12+
text: true,
13+
execute: async ({ xcoders, m, x, apikeys, query, quoted, mimetype, getRandom, waitingMessage, errorMessage, host, addHitCommand, createSticker }) => {
14+
try {
15+
if (!/image\//.test(mimetype)) return errorMessage(m.chat, 'Invalid mimetype, only images are allowed');
16+
const [text2, text] = query.split('|');
17+
const buffer = await quoted.download();
18+
const name = getRandom(mimetype.split('/')[1]);
19+
const FormData = new formData();
20+
FormData.append('image', buffer, {
21+
contentType: mimetype,
22+
filename: name
23+
});
24+
const { data } = await axios.post(`${host}/api/maker/meme?text=${text || ''}&text2=${text2 || ''}&apikey=${apikeys}`, FormData.getBuffer(), { headers: FormData.getHeaders() });
25+
const result = Buffer.from(data);
26+
const resultSticker = await createSticker(result, {});
27+
await waitingMessage(m.chat);
28+
addHitCommand('MEME Maker', true);
29+
return xcoders.sendMessage(m.chat, { sticker: resultSticker, contextInfo: { forwardingScore: 9999999, isForwarded: true } }, { quoted: x });
30+
} catch (error) {
31+
return errorMessage(m.chat, error, 'MEME Maker');
32+
}
33+
}
34+
};

commands/Maker/nulis.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'use strict';
2+
3+
export default {
4+
views: ['nulis < text >'], // view for message in menu
5+
command: /^nulis$/i, //another command.
6+
description: 'Create write text to paper',
7+
usage: '%cmd% xcoders',
8+
query: true,
9+
text: true,
10+
execute: async ({ xcoders, m, x, host, query, getBuffer, waitingMessage, errorMessage, addHitCommand, apikeys }) => {
11+
try {
12+
const result = await getBuffer(`${host}/api/maker/nulis?text=${query}&apikey=${apikeys}`);
13+
await waitingMessage(m.chat);
14+
addHitCommand('Writes Maker', true);
15+
return xcoders.sendMessage(m.chat, { image: result, caption: response.success, contextInfo: { forwardingScore: 9999999, isForwarded: true } }, { quoted: x });
16+
} catch (error) {
17+
return errorMessage(m.chat, error, 'Writes Maker');
18+
}
19+
}
20+
};

0 commit comments

Comments
 (0)