| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- 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()
|