const Telegram = require('telegraf/telegram'); const Telegraf = require('telegraf'); const fs = require('fs'); const https = require('https'); const telegram = new Telegram(process.env.BOT_TOKEN); const bot = new Telegraf(process.env.BOT_TOKEN); const downloadPrefix = process.env.DOWNLOAD_PREFIX; const musicDir = 'music' const videoDir = 'video' const documentDir = 'downloads' const admin = 170276072; const langData=fs.readFileSync('./string/lang.json', 'utf8'); const language = JSON.parse(langData); var lang = language.en; bot.start( (ctx) => { console.log('started:', ctx.from.id) return ctx.reply(lang.welcome) }) // ---------------------------------------------------------------------------- bot.command('spanish', (ctx) => { lang = language.es; ctx.reply(lang.langChanged) }) // ---------------------------------------------------------------------------- bot.command('english', (ctx) => { lang = language.en; ctx.reply(lang.langChanged) }) // ---------------------------------------------------------------------------- bot.command('donate', (ctx) => ctx.reply(lang.donate)) // ---------------------------------------------------------------------------- bot.command('help', (ctx) => ctx.reply(lang.help)) // ---------------------------------------------------------------------------- bot.on('audio', (ctx) => { console.log('Audio message received from: ', ctx.from.id) telegram.getFile( ctx.message.audio.file_id, (ctx) => { console.log('audio_id sent to TG: ', ctx.message.audio.file_id) }) const specialChars = "!@#$^&%*()+=[]\/{}|:<>?,.' " const audio = ctx.message.audio var filename = audio.performer + "-" + audio.title for (var i = 0; i < specialChars.length; i++) { filename = filename.replace(new RegExp("\\" + specialChars[i], 'gi'), '_') } filename = filename + ".mp3" const downloadDir = downloadPrefix + musicDir + '/'; if (!fs.existsSync(downloadDir)){ fs.mkdirSync(downloadDir, true); } const file = fs.createWriteStream(downloadDir + filename); const promise = telegram.getFile(audio.file_id) promise.then(function(result){ const requestFile = https.get("https://api.telegram.org/file/bot" + process.env.BOT_TOKEN + "/" + result.file_path, function(response) { if(response.statusCode != 200){ return ctx.reply('Error downloading file: ' + response.statuscode) }else{ response.pipe(file); console.log('Download finished stored at: ' + downloadDir + filename) return ctx.reply('Downloaded "' + filename + '"') } }); }) }) // ---------------------------------------------------------------------------- bot.on('video', (ctx) => { console.log('Video message received from: ', ctx.from.id) telegram.getFile( ctx.message.video.file_id, (ctx) => { console.log('file_id sent to TG: ', ctx.message.video.file_id) }) const video = ctx.message.video var filename = video.file_id var extension = '.mp4' if (video.mime_type != undefined){ extension = '.' + video.mime_type.split('/')[1] } filename = filename + extension const downloadDir = downloadPrefix + videoDir + '/'; if (!fs.existsSync(downloadDir)){ fs.mkdirSync(downloadDir, true); } const file = fs.createWriteStream(downloadDir + filename); const promise = telegram.getFile(video.file_id) promise.then(function(result){ const requestFile = https.get("https://api.telegram.org/file/bot" + process.env.BOT_TOKEN + "/" + result.file_path, function(response) { if(response.statusCode != 200){ return ctx.reply('Error downloading file: ' + response.statuscode) }else{ response.pipe(file); console.log('Download finished stored at: ' + downloadDir + filename) return ctx.reply('Downloaded "'+ filename + '"') } }); }) }) // ---------------------------------------------------------------------------- bot.on('document', (ctx) => { console.log('Document message received from: ', ctx.from.id) telegram.getFile( ctx.message.document.file_id, (ctx) => { console.log('file_id sent to TG: ', ctx.message.document.file_id) }) const specialChars = "!@#$^&%*()+=[]\/{}|:<>?, " const document = ctx.message.document var filename = document.file_name for (var i = 0; i < specialChars.length; i++) { filename = filename.replace(new RegExp("\\" + specialChars[i], 'gi'), '') } const downloadDir = downloadPrefix + documentDir + '/'; if (!fs.existsSync(downloadDir)){ fs.mkdirSync(downloadDir, true); } const file = fs.createWriteStream(downloadDir + filename); const promise = telegram.getFile(document.file_id) promise.then(function(result){ const requestFile = https.get("https://api.telegram.org/file/bot" + process.env.BOT_TOKEN + "/" + result.file_path, function(response) { if(response.statusCode != 200){ return ctx.reply('Error downloading file: ' + response.statuscode) }else{ response.pipe(file); console.log('Download finished stored at: ' + downloadDir + filename) return ctx.reply('Downloaded "'+ filename + '"') } }); }) }) // ---------------------------------------------------------------------------- bot.startPolling()