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 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: ', 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 var performer = audio.performer for (var i = 0; i < specialChars.length; i++) { filename = filename.replace(new RegExp("\\" + specialChars[i], 'gi'), '') performer = performer.replace(new RegExp("\\" + specialChars[i], 'gi'), '') } filename = filename + ".mp3" const downloadDir = downloadPrefix + musicDir + '/' + performer + '/'; 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: ', ctx.from.id) telegram.getFile( ctx.message.video.file_id, (ctx) => { console.log('file_id sent to TG: ', ctx.message.video.file_id) }) const specialChars = "!@#$^&%*()+=[]\/{}|:<>?,. " 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.startPolling()