File size: 1,726 Bytes
91111e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
// ============================================================
// brain.js — Load RiveScript brain data từ file .rive
// ============================================================

/**
 * BRAIN_DATA — Dữ liệu hội thoại RiveScript cho 3 ngôn ngữ.
 * Được load từ các file .rive trong thư mục brain/.
 * Mỗi key (vi, en, ja) chứa nội dung RiveScript dạng chuỗi.
 */
var BRAIN_DATA = {
    vi: '',
    en: '',
    ja: ''
};

/**
 * Danh sách file .rive tương ứng với mỗi ngôn ngữ.
 */
var BRAIN_FILES = {
    vi: 'brain/vi.rive',
    en: 'brain/en.rive',
    ja: 'brain/ja.rive'
};

/**
 * Load nội dung file .rive cho một ngôn ngữ.
 * @param {string} lang - Mã ngôn ngữ ("vi", "en", "ja")
 * @returns {Promise<string>} Nội dung file .rive
 */
async function loadBrainFile(lang) {
    var filePath = BRAIN_FILES[lang];
    if (!filePath) {
        console.error('Không tìm thấy file brain cho ngôn ngữ:', lang);
        return '';
    }

    try {
        var response = await fetch(filePath);
        if (!response.ok) {
            throw new Error('HTTP ' + response.status);
        }
        return await response.text();
    } catch (err) {
        console.error('Lỗi load brain file [' + lang + ']:', err);
        return '';
    }
}

/**
 * Load tất cả brain files cho 3 ngôn ngữ.
 * Gọi hàm này trước khi khởi tạo bot.
 * @returns {Promise<void>}
 */
async function loadAllBrains() {
    var langs = Object.keys(BRAIN_FILES);
    var promises = langs.map(function (lang) {
        return loadBrainFile(lang).then(function (content) {
            BRAIN_DATA[lang] = content;
        });
    });
    await Promise.all(promises);
}