-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
102 lines (92 loc) · 2.8 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// import module
const { Telegraf } = require('telegraf');
const { Composer } = require('micro-bot');
require('dotenv').config();
// import function
const sendResult = require('./functions/sendResult');
const getMusicMetadata = require('./functions/getMusicMetadata');
const download = require('./functions/download');
// deklarasi & inisialisasi env variables
const NODE_ENV = process.env.NODE_ENV;
const BOT_TOKEN = process.env.BOT_TOKEN;
const API_ROOT = process.env.API_ROOT;
// deklarasi global variables
let url, bot, title;
// Atur mode
switch (NODE_ENV) {
case 'development':
bot = new Telegraf(BOT_TOKEN, {
telegram: {
apiRoot: API_ROOT,
},
});
break;
case 'production':
bot = new Composer();
break;
}
// command start
bot.start((ctx) => {
// console.log(ctx);
ctx.replyWithMarkdown(
`Halo @${ctx.from.username}, selamat datang di [YouTube Downloader Bot](https://t.me/tfkhdyt_ytdl_bot), kirim link video yang ingin anda unduh untuk mengunduh video tersebut.
Untuk video yang memiliki subtitle, maka secara otomatis semua subtitle itu akan ter-embed ke dalam video.
_*YouTube Downloader lain mana bisa_
*PERHATIAN*:
- Bot tidur mulai jam 21:00 WIB sampai 04:00 WIB
- Dikarenakan storage hosting yang terbatas, maka kalian tidak dapat mengunduh video yang memiliki ukuran di atas *450 MB*
- Anda tidak dapat mengunduh video yang mempunyai geo-restriction (Contoh: *Muse Indonesia*)`,
{
disable_web_page_preview: true,
}
);
});
// command help
bot.command('help', (ctx) =>
ctx.reply(`Anda hanya perlu mengirimkan link dari video yang ingin diunduh`)
);
// command utama
bot.on('text', async (ctx) => {
url = ctx.message.text;
const messageId = ctx.update.message.message_id;
const { metadata, metadataMessage, judul } = await sendResult(
url,
ctx,
messageId
);
title = { metadata, metadataMessage, judul };
console.log(title);
});
// callback
bot.on('callback_query', async (ctx) => {
const metadata = title.metadata;
const metadataMessage = title.metadataMessage;
const judul = title.judul;
ctx.deleteMessage(metadataMessage);
ctx.deleteMessage(ctx.update.callback_query.message.message_id);
let callbackQuery = ctx.callbackQuery.data;
callbackQuery = callbackQuery.split(',');
const formatCode = callbackQuery[0];
const display_id = callbackQuery[1];
const quality = callbackQuery[2];
const fileSize = callbackQuery[3];
let info = await getMusicMetadata(display_id, formatCode);
info = { ...info, quality, judul, fileSize, metadata };
console.log('Metadata:', info);
download(ctx, info);
});
switch (NODE_ENV) {
case 'development':
bot.launch();
break;
case 'production':
module.exports = {
bot,
options: {
telegram: {
apiRoot: API_ROOT,
},
},
};
break;
}