← Вернуться к списку тем

тг-бот тестировщик в среде GAS

var telegramToken = '7872456097:AAGNPT2gb7Yp84OOGFZNakQuQ5XNd8KPkG4';
var telegramUrl = 'https://api.telegram.org/bot' + telegramToken;

var webAppUrl = 'https://script.google.com/macros/s/AKfycbxUreoRVLyNs4Im3CYWO66Hr4bkq4ojt6OU8qyq34AsoGX9PAIU1PuXZ_NmTTZOZNJ-/exec';

function doPost(e) {
    try {
        var contents = JSON.parse(e.postData.contents);
        var chatId, message;
        if (contents.message) {
            chatId = contents.message.chat.id;
            message = contents.message.text;
        } else if (contents.callback_query) {
            chatId = contents.callback_query.from.id;
            message = contents.callback_query.data;
            answerCallbackQuery(contents.callback_query.id);
        }
        if (message.toLowerCase() === '/start') {
            sendWelcomeMessage(chatId);
        } else {
            checkAnswer(chatId, message);
        }
    } catch (error) {
        Logger.log("Error: " + error.toString());
    }
}

function sendWelcomeMessage(chatId) {
    var welcomeText = "Добро пожаловать! Я бот для тестирования знаний. Чтобы начать, просто ответьте на первый вопрос.";
    sendMessage(chatId, welcomeText);
    sendQuestion(chatId);
}

function sendQuestion(chatId) {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Questions');
    var data = sheet.getDataRange().getValues();
    var randomIndex = Math.floor(Math.random() * (data.length - 1)) + 1;
    var question = data[randomIndex];
    var questionText = question[0];
    var options = [
        [{text: question[1], callback_data: '1'}],
        [{text: question[2], callback_data: '2'}],
        [{text: question[3], callback_data: '3'}]
    ];
    sendMessageWithButtons(chatId, questionText, options);
    PropertiesService.getScriptProperties().setProperty('correctAnswer', question[4]);
}

function checkAnswer(chatId, message) {
    var correctAnswer = PropertiesService.getScriptProperties().getProperty('correctAnswer');
    if (message === correctAnswer) {
        sendMessage(chatId, 'Правильно! 🎉');
    } else {
        sendMessage(chatId, 'Неправильно. Попробуйте снова!');
    }
    sendQuestion(chatId);
}

function sendMessage(chatId, text) {
    var url = telegramUrl + '/sendMessage?chat_id=' + chatId + '&text=' + encodeURIComponent(text);
    UrlFetchApp.fetch(url);
}

function sendMessageWithButtons(chatId, text, options) {
    var payload = {
        method: 'post',
        contentType: 'application/json',
        payload: JSON.stringify({
            chat_id: chatId,
            text: text,
            reply_markup: {
                inline_keyboard: options
            }
        })
    };
    UrlFetchApp.fetch(telegramUrl + '/sendMessage', payload);
}

function answerCallbackQuery(callbackQueryId) {
    var url = telegramUrl + '/answerCallbackQuery?callback_query_id=' + callbackQueryId;
    UrlFetchApp.fetch(url);
}

Авторизуйтесь через Telegram, чтобы оставить комментарий.
Откройте по ссылке или QR бот @iMakeBot, нажмите кнопку Старт/Start.
Следуйте инструкциям бота.