Translite Code Comments by Telegram beta (ПЕРЕВОД КОММЕНТАРИЕВ В КОДЕ)

Translite Code Comments by Telegram beta (ПЕРЕВОД КОММЕНТАРИЕВ В КОДЕ)

@volond


This program uses the library Telegram API Bot Library Version 2 on Google Apps Script


When you receive a message with a code, if you reply to it, the bot will try to translate one-line comments in the code into the language of your choice, also, since it uses this library, it will try to translate some text messages into code

Данная программа использует библиотеку Telegram API Bot Library Version 2 на Google Apps Script


При получении сообщения с кодом,  если вы на него ответите, бот попробует перевести однострочные комментарии в коде на выбранные вам вами язык, также так как он использует данную библиотеку ,он попробует перевести некоторые текстовые сообщения  в коде




var tg = new telegram.daftar();

var user = new telegram.user();

var adminIDs = [192818801]; //Admin Chat ID

var usernamebot = '..........'; // Bot @Name

//=================================================================

function prosesUpdate(update) {

    if (update.message) {

        var msg = update.message;

        if (msg.reply_to_message) {

            var codeNoTrans = msg.reply_to_message.text

            var codeTrans = transliteCode(msg, 'reply_to_message')

            tg.sendMessage(adminIDs[0], '<code>' + codeTrans + '</code>', 'HTML')

        }

    }

}


function transliteCode(str) {

    const regex = /\/\/.*\n/gm;

    const regexs = [/\/\/.*\n/gm,

        /(kirimPesan)\(.+['|"](.*)['|"]\)/g,

        /(\.text.*=.*)['|"](.*)['|"]/g,

        /(,.*text.*:.*)['|"](.*)['|"]/g

    ]



    regexs.forEach(regex => {

        let m;

        var ruArr = []

        while ((m = regex.exec(str)) !== null) {

            // This is necessary to avoid infinite loops with zero-width matches

            if (m.index === regex.lastIndex) {

                regex.lastIndex++;

            }


            // The result can be accessed through the `m`-variable.

            m.forEach((match, groupIndex) => {

                console.log(`Found match, group ${groupIndex}: ${match}`);

                ruArr.push([match, transliteMe(match, 'ru')])



            });

        }


        var code = ruArr.reduce(

            (str, row) => {

                str = str.replace(row[0], row[1])

                return str

            }, str

        )


        str = code

    })


    return str

}


function transliteMe(text, lang) {


    var iU = false//isURL(text)

    var contentType = iU ? 'html' : 'text';

    text = iU ? UrlFetchApp.fetch(text).getBlob().getDataAsString() : text;

    var tr = LanguageApp.translate(text, '', lang, { contentType: contentType })

    Logger.log(tr)

    return tr;

}


function isURL(str) {

    var urlRegex = '^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$';

    var url = new RegExp(urlRegex, 'i');

    return str.length < 2083 && url.test(str);

}

//const { type } = require("os");


// fungsi buat handle hanya menerima pesan berupa POST, kalau GET keluarkan pesan error

function doGet(e) {

  return tg.util.outputText("Hanya data POST yang kita proses yak!");

}

// fungsi buat handle pesan POST

function doPost(e) {


  // data e kita verifikasi

  var update = tg.doPost(e);


  // jika data valid proses pesan

  if (update) {

    prosesUpdate(update);

  }


}

https://issue.life/questions/5989315/regex-for-match-replacing-javascript-comments-both-multiline-and-inline

Report Page