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);
}
}