До змісту

ІНСТРУКЦІЯ · 9 КРОКІВ · ≈ 40 ХВ

Повторіть бота самостійно

Telegram-бот, який знає ваш курс (базу знань із Google Таблиці), пояснює код і показує розклад, — на Google Apps Script і Gemini. Без серверів, без встановлення програм і без бюджету. Кожен крок закінчується рядком «Має вийти» — так ви знатимете, що все гаразд.

Що потрібно
  • Особистий акаунт Gmail. Шкільні й коледжні акаунти Google Workspace часто мають заблоковані Apps Script або AI Studio — це найчастіша причина, чому «не працює».
  • Telegram на телефоні або комп’ютері.
  • ≈ 40 хвилин і браузер. Нічого встановлювати не треба.
  • 0 ₴. Безкоштовних лімітів Gemini достатньо для навчального бота.
Зміст
  1. Бот у @BotFather
  2. Ключ Gemini
  3. Проєкт Apps Script
  4. Секрети
  5. Перший запуск
  6. Вебдодаток
  7. Під’єднати Telegram
  8. Характер бота
  9. База знань вашого курсу
  10. Якщо щось не так

Спершу — безпека даних

Що НЕ можна надсилати боту. Будь-який ШІ-сервіс — це чужий сервер. Безкоштовний рівень Gemini може використовувати запити для покращення продуктів Google. Більшість наших учнів — неповнолітні, а їхні персональні дані захищає Закон України «Про захист персональних даних».
Ні
  • ПІБ учнів і колег
  • оцінки, характеристики, рейтинги з прізвищами
  • телефони, адреси, email
  • фото дітей, медичні дані
  • токени, ключі, паролі — у чат чи в код
Так
  • код і помилки без особистих даних
  • тема заняття, ідеї вправ
  • знеособлені приклади: «учень А», «група 1»
  • розклад групи без прізвищ студентів
  • ключі — лише у Властивостях скрипта

Бот із цієї інструкції сам відмовляє, якщо бачить у повідомленні телефон, email чи оцінки з прізвищем, і веде лише анонімний журнал. Перевіряйте правила свого закладу щодо Telegram на службових пристроях.

КРОК 1/9

Створіть бота в @BotFather

≈ 5 хв

Відкрийте в Telegram офіційний бот @BotFather (з синьою галочкою) і створіть свого:

повідомлення від BotFather з токеном виду 123456789:AAE….

Токен = пароль.Не показуйте його на екрані, не надсилайте в чати і не вставляйте в код. Якщо він «засвітився» — у @BotFather виконайте /revoke і отримайте новий.
КРОК 2/9

Отримайте ключ Gemini API

≈ 3 хв
  1. Відкрийте aistudio.google.com/apikey під особистим Gmail.
  2. Натисніть Створити ключ APICreate API key і скопіюйте ключ.

рядок із приблизно 39 символів, що починається на AIza.

КРОК 3/9

Створіть проєкт Apps Script

≈ 3 хв
  1. Відкрийте script.google.com → Новий проєктNew project.
  2. Клацніть на назву «Проєкт без назви» вгорі й назвіть, наприклад, ШІ-асистент.
  3. Видаліть усе з файлу Code.gs і вставте код із сторінки «Код» (кнопка «Копіювати»).
  4. Збережіть: Ctrl+S (на Mac — ⌘+S).

файл Code.gs збережено без червоних повідомлень про помилки.

КРОК 4/9

Додайте секрети у Властивості скрипта

≈ 3 хв

Ключі зберігаємо поза кодом: так код можна показати студентам або викласти на GitHub, і ніхто не отримає доступ до вашого бота.

  1. Ліворуч — ⚙ Налаштування проєктуProject Settings.
  2. Унизу — Властивості скриптаScript Properties → Додати властивість скриптаAdd script property.
  3. Додайте дві властивості й натисніть ЗберегтиSave:
ВластивістьЗначення
TELEGRAM_TOKENтокен із кроку 1
GEMINI_API_KEYключ із кроку 2
function prop_(name) {
  return PropertiesService
    .getScriptProperties()   // сховище проєкту, не код
    .getProperty(name);
}

у налаштуваннях дві властивості: TELEGRAM_TOKEN і GEMINI_API_KEY.

КРОК 5/9

Перший запуск: setup()

≈ 5 хв
  1. Поверніться до редактора <>. У списку функцій угорі оберіть setup і натисніть ▷ ВиконатиRun.
  2. З’явиться вікно Потрібен дозвілAuthorization required → Переглянути дозволиReview permissions → оберіть свій акаунт.
  3. Google покаже «Google не перевірив цей додаток» (Google hasn’t verified this app). Це нормально: це ваш власний скрипт. Натисніть ДодатковоAdvanced → Перейти до «ШІ-асистент» (небезпечно)Go to … (unsafe) → ДозволитиAllow.
Що створить setup():секретний ключ вебхука, Таблицю «ШІ-асистент — база знань і розклад» (аркуші «База знань» і «Розклад» із прикладами) та анонімний журнал. Обидві таблиці з’являться на вашому Google Диску — у кроці 9 ви заповните їх своїм курсом.

у журналі виконання внизу — рядок setup() done.

КРОК 6/9

Розгорніть як вебдодаток

≈ 5 хв
  1. РозгорнутиDeploy → Нове розгортанняNew deployment.
  2. Біля «Виберіть тип» натисніть ⚙ → ВебдодатокWeb app.
  3. Виконувати як: ЯExecute as: Me; Хто має доступ: УсіWho has access: Anyone → РозгорнутиDeploy.
  4. Скопіюйте URL вебдодатка (закінчується на /exec) і додайте його у Властивості скрипта як WEB_APP_URL.
Саме «Усі», а не «Усі з акаунтом Google».Інакше Telegram отримуватиме сторінку входу замість вашого скрипта.

якщо відкрити URL у браузері, з’явиться текст ШІ-асистент викладача працює ✔.

КРОК 7/9

Під’єднайте Telegram: setWebhook()

≈ 2 хв
  1. Оберіть функцію setWebhook → ▷ ВиконатиRun.
  2. Напишіть своєму боту /start, потім надішліть будь-який шматок коду.

у журналі — Webhook set ✔, а бот відповідає на /start.

КРОК 8/9

Змініть характер бота

≈ 5 хв

Щоб пристосувати бота під свій предмет, достатньо змінити один фрагмент — системний промпт SYSTEM_PROMPT на початку файлу.

const SYSTEM_PROMPT = [
  'Ти — доброзичливий асистент викладача інформатики…',
  // спробуйте, наприклад:
  // 'Ти — асистент викладача історії. Пояснюй події через',
  // 'причини й наслідки і став одне запитання для самоперевірки.',
].join(' ');

Після змін: РозгорнутиDeploy → Керувати розгортаннямиManage deployments → ✎ → Версія: Нова версіяVersion: New version → РозгорнутиDeploy. Адреса вебдодатка лишиться тією самою.

бот відповідає в новому стилі.

КРОК 9/9

Наповніть базу знань свого курсу

≈ 10 хв

Бот відповідає про ваш курс за Таблицею «ШІ-асистент — база знань і розклад», яку створив setup() на вашому Google Диску. Код і розгортання більше не чіпаєте — лише Таблицю.

  1. Відкрийте Таблицю: посилання є в журналі виконання setup() або знайдіть її на Google Диску.
  2. Аркуш База знань: один рядок — одна тема. Ліворуч Тема, праворуч Інформація: дедлайни, оцінювання, перездачі, матеріали, відповіді на часті питання.
  3. Аркуш Розклад: ваш розклад — бот покаже його за командою /rozklad.
  4. Зміни бот підхоплює сам приблизно за 5 хвилин.
ТемаІнформація
Лабораторні й дедлайниЛР1 Змінні — до 15 вересня; ЛР2 Умови — до 29 вересня; ЛР3 Цикли — до 13 жовтня…
ОцінюванняЛабораторні — по 10 балів, дві модульні — по 15, іспит — 20. Запізнення — мінус 2 бали за тиждень.
ШІ на навчанніМожна для пояснень і пошуку помилок. Код пишете самі й пояснюєте на захисті.
Лише загальні правила курсу.Усе з бази знань надсилається в Gemini разом із кожним питанням. Не пишіть у Таблицю ПІБ, оцінки чи телефони студентів. Обсяг — до ~40 000 символів (приблизно 15 сторінок).

на питання «Коли дедлайн ЛР3?» бот відповідає за вашою Таблицею, а після зміни рядка — через кілька хвилин уже по-новому.

Якщо щось не так

Першим ділом запустіть функцію getWebhookInfo: у полі last_error_message Telegram пише, що саме пішло не так.

СимптомПричинаЩо зробити
Бот мовчитьвебхук не встановлено або змінився URLперевірте WEB_APP_URL, ще раз setWebhook
401 Unauthorizedнеправильний токен Telegramскопіюйте токен із @BotFather у TELEGRAM_TOKEN без пробілів
«Не вдалося отримати відповідь від ШІ (код 400/403)»неправильний ключ Gemini або AI Studio заблокованоновий ключ в AI Studio; лише особистий Gmail
«…дуже багато людей одночасно» (429)вичерпано безкоштовний лімітзачекайте хвилину; або властивість GEMINI_MODEL = gemini-3.5-flash-lite
У браузері сторінка входу замість «…працює ✔»доступ не «Усі»крок 6: «Хто має доступ: Усі»
Зміни в коді не діютьпрацює стара версіякрок 8: «Керувати розгортаннями → Нова версія»
«Script property … is not set»немає властивостікрок 4; назва — великими літерами, без пробілів
Не відкривається script.google.com чи AI Studioобмеження шкільного акаунтаувійдіть з особистого Gmail
Бот «не знає» про ваш курсаркуш перейменовано або зміни щойно внесеноназва аркуша — саме База знань; зачекайте 5 хвилин
Бот відповідає двічікілька старих розгортань із вебхукамиdeleteWebhook, потім setWebhook

Шпаргалка

Властивості скрипта
  • TELEGRAM_TOKEN, GEMINI_API_KEY — ви
  • WEB_APP_URL — після кроку 6
  • DATA_SHEET_ID — ваша Таблиця бази знань і розкладу
  • GEMINI_MODEL — необов’язково
  • решту створює setup()
Функції
  • setup — перший запуск
  • setWebhook / deleteWebhook
  • getWebhookInfo — діагностика
  • testGemini — перевірити ключ і базу знань
Що далі

Питання — у коментарях каналу майстер-класу. Інструкцію доповнюємо за вашими питаннями.

КаналВідгук за 1 хвУсі вебінари