-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
86 lines (73 loc) · 2.61 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
const fetch = require('node-fetch');
const SettingsUI = require('tera-mod-ui').Settings
async function detectLanguage(text) {
try {
const url = `https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&dt=t&q=${encodeURI(text)}`;
const response = await fetch(url);
const data = await response.json();
// 'data' contiene mucha información, incluyendo la detección del idioma
// El idioma detectado se encuentra en data[2]
return data[2];
} catch (error) {
console.error('Error during language detection:', error);
return null;
}
}
// Esta función usa un método no oficial para traducir texto usando Google Translate a través de una solicitud web.
async function translateText(input) {
try {
const url = `https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=${encodeURI(input)}`;
const response = await fetch(url);
const data = await response.json();
// La respuesta es un array, con el texto traducido en la primera posición del primer array.
return data[0][0][0];
} catch (error) {
console.error('Error during translation:', error);
return null; // Retorna null en caso de un error.
}
}
function cleanMessage(text) {
return text.replace(/^<FONT>|<\/FONT>$/g, '');
}
module.exports = function translator(mod) {
let ui = null;
const options = mod.settings;
if (global.TeraProxy.GUIMode) {
ui = new SettingsUI(mod, require('./settings_structure'), mod.settings, { height: 390 })
ui.on('update', settings => {
mod.settings = settings
})
this.destructor = () => {
if (ui) {
ui.close()
ui = null
}
}
}
mod.command.add("trui", () => { if (ui) ui.show() });
mod.hook('S_CHAT', 3, async (event) => {
if(!options.enabled) return
const originalMessage = event.message;
const cleanedMessage = cleanMessage(originalMessage);
const language = await detectLanguage(cleanedMessage);
const languageMap = {
'ru': options.ru,
'de': options.de,
'es': options.es,
'fr': options.fr,
'tr': options.tr,
'it': options.it,
'ar': options.ar,
'zh-CN': options.zh,
'zh-TW': options.zh,
'ja': options.ja,
'ko': options.ko
};
if (languageMap[language]) {
const translatedMessage = await translateText(cleanedMessage);
if (translatedMessage) {
mod.command.message(event.name + ': ' + `<font color='#00FFDC'>${(translatedMessage)}</font>`)
}
}
});
}