# Функції калькулятора для курсів

## Реєстрація на курс

register\_customer\_on\_course(tariff\_id, email, email\_notification, period, reregistration)

<table><thead><tr><th width="239.15234375">Параметри</th><th></th></tr></thead><tbody><tr><td><strong>!</strong> <strong>tariff_id</strong></td><td>обов’язковий параметр, ID тарифного плану. Ви можете скопіювати його в адресному рядку браузера в налаштуваннях тарифного плану.</td></tr><tr><td><strong>! email</strong></td><td>обов’язковий параметр, електронна адреса клієнта. Ви можете вказати конкретне значення або змінну, у якій записано email клієнта.</td></tr><tr><td><strong>email_notification</strong></td><td>необов’язковий параметр, надсилає учневі лист про його реєстрацію на курс, якщо він увімкнений.</td></tr><tr><td><strong>period</strong> </td><td><p>необов’язковий параметр, обмеження часу дії тарифного плану. Підтримуються такі формати дати: %d.%m.%Y %H:%M або %d.%m.%Y Приклад:</p><p><code>period = '15.08.2023 11:00'</code></p></td></tr><tr><td>reregistration</td><td>необов’язковий параметр зі значеннями True або False. Цей параметр не є обов’язковим і вказується, якщо потрібно повторно зареєструвати студентів на той самий курс і тарифний план.</td></tr><tr><td>purchase_price</td><td>необов’язковий параметр. Дає змогу вказати вартість курсу, якщо клієнт оплатив доступ до нього через бот. Якщо ви не вкажете його, буде використана вартість вказаного тарифного плану. Це стане в пригоді, якщо клієнт оплачує доступ до курсу через бот за іншою ціною, ніж вартість вказаного тарифного плану.</td></tr></tbody></table>

Приклад: register\_customer\_on\_course(123, email, 1, "", True)

{% hint style="info" %}
Щоб клієнти отримували листи, передайте 1 у параметр **email\_notification.**

**Якщо ви не надішлете 1, то листи клієнта не будуть отримані!**
{% endhint %}

## Як надати доступ до курсу через Telegram Web App?

Для цього вкажіть функцію в Block Calculator

**`access_course_from_webapp(text, button_label)`**\
Під час використання функції учень входить у Telegram і отримує доступ до курсу. Для подальшого навчання учневі не потрібно вводити логін і пароль, оскільки авторизацію вже завершено.

Параметри функції:

**`text`** — це текст повідомлення, який отримає клієнт. Параметр можна вказати в змінній, записавши її в полі Calculator перед викликом функції, або вказати безпосередньо у функції в лапках.

**`button_label`** — це текст на кнопці Web App. Ви можете вказати параметр або в змінній, або безпосередньо у функції. У другому випадку параметр записується в лапках.

{% hint style="warning" %} <mark style="color:червоний;">Це актуально ТІЛЬКИ для роботи з Telegram-ботом.</mark>
{% endhint %}

На скріншоті нижче показано приклад використання функції.\
На першому кроці ми реєструємо клієнта на курс, потім використовуємо функцію access\_course\_com\_webapp, щоб надати доступ до онлайн-продукту. &#x20;

Результат виконання функції:

<div data-with-frame="true"><figure><img src="/files/a192accfe7715fc67964e070ddb18738a84a0c1a" alt="" width="375"><figcaption></figcaption></figure></div>

Ця кнопка відкриває сторінку з курсами/тарифами, які має учень.

> Якщо клієнт не пов’язаний з обліковим записом учня, функція повертає 'client not attached to customer'.
>
> Щоб створити таке зв’язування, потрібно просто записатися на курс через бот.

<div data-with-frame="true"><figure><img src="/files/a9b021735005564a726903861df407b1b846a3ec" alt="" width="563"><figcaption></figcaption></figure></div>

## Як надати доступ до курсу через бот

### register\_customer\_on\_course()

Для цього вкажіть функцію в Block Calculator

**register\_customer\_on\_course(tariff\_id, email, email\_notification, period)**

| Обов’язкові параметри                                                                                                                                                  | Необов’язкові параметри                                                                                                                                                                         |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:червоний;">**!**</mark> **tariff\_id** — ID тарифного плану. Ви можете скопіювати його в адресному рядку браузера в налаштуваннях тарифного плану.  | **email\_notification** — цей параметр надсилає учневі лист про його реєстрацію на курс, якщо він увімкнений.                                                                                   |
| <mark style="color:червоний;">**!**</mark>**&#x20;email** — електронна адреса клієнта. Ви можете вказати конкретне значення або змінну, у якій записано email клієнта. | <p><strong>period</strong> — обмеження часу дії тарифного плану. Підтримуються такі формати дати:  %d.%m.%Y %H:%M або %d.%m.%Y <br>Приклад:</p><p> <code>period = '15.08.2023 11:00'</code></p> |

{% hint style="danger" %}
Щоб клієнти отримували листи, потрібно передати 1 у параметр **email\_notification.**&#x20;

**Якщо ви** <mark style="color:червоний;">не надішлете 1,</mark> **то листи клієнта&#x20;**<mark style="color:червоний;">**не будуть отримані!**</mark>
{% endhint %}

Призначте функцію змінній.&#x20;

Після виконання в змінну буде записано одну з відповідей:

**customer is already on tariff** — якщо тарифний план уже є або доступ закрито вручну

**wrong\_tariff\_id** — вказано некоректний id

**tariff\_added** — тарифний план було додано студенту

Приклад:

<div data-with-frame="true"><figure><img src="/files/acf0511a7bcbd8919f641af4872a6da517ac336f" alt="" width="563"><figcaption></figcaption></figure></div>

## Як перевірити наявність доступу до курсу

### has\_customer\_tariff(tariff\_id)

Для цього вкажіть функцію в Block Calculator **has\_customer\_tariff(tariff\_id, email)**<br>

| Обов’язкові параметри                                                                                                                                                                               | Необов’язкові параметри                                                                                                                   |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:червоний;">**!**</mark> **tariff\_id** — ID тарифного плану. Ви можете скопіювати його в адресному рядку браузера в налаштуваннях тарифного плану або в розділі «Тарифні плани». | **email** — необов’язковий параметр. Передайте цей параметр, щоб перевірити, чи записаний клієнт на курс із вказаною електронною адресою. |

Після виконання функція повертає True або False.

{% hint style="danger" %}
Можливі відповіді функції у разі помилок:

**wrong tariff\_id** — передано некоректне значення **tariff\_id**

**customer not found** — користувач не зареєстрований як студент.
{% endhint %}

## Як зареєструвати клієнта на платформі БЕЗ надання доступу до курсу

### register\_customer(email)

Для цього вкажіть функцію в Block Calculator **register\_customer(email)**&#x20;

| Параметри функції                                    | Опис                       |
| ---------------------------------------------------- | -------------------------- |
| <mark style="color:червоний;">**!**</mark> **email** | електронна адреса клієнта. |

Ви можете вказати змінну у функції або значення параметра. Щоб указати змінну, напишіть її назву без лапок, службових символів, решітки та фігурних дужок. Щоб указати конкретне значення, вкажіть електронну адресу клієнта в лапках.

> Рекомендується призначати функцію змінній, щоб ви могли бачити результат її виконання і працювати з ним. Приклад на скріншоті нижче: перед знаком дорівнює вказано ім’я змінної, далі — функція і параметр у дужках.

Після успішного виконання функції відповідь буде записано в змінну:\
**customer created**

## Як перевірити доступ до курсу та обмеження за часом?

Для цього вкажіть функцію в Block Calculator **has\_customer\_tariff\_with\_date(tariff\_id, email),** щоб перевірити наявність доступу до курсу за email (повертає детальну відповідь про наявність доступу та часові обмеження).

&#x20;Параметри функції:

| Обов’язковий параметр                                                                                                                                                                               | Необов’язковий параметр              |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| <mark style="color:червоний;">**!**</mark> **tariff\_id** — ID тарифного плану. Ви можете скопіювати його в адресному рядку браузера в налаштуваннях тарифного плану або в розділі «Тарифні плани». | **email** — необов’язковий параметр. |

Відповідь буде такою:

* студент записаний і є обмеження за часом доступу: Доступ є до 2023-09-28 22:00:00&#x20;
* студент записаний, обмежень немає: Доступ без обмеження за часом&#x20;
* студент не записаний: Немає доступу до цього тарифу

{% hint style="danger" %}
**Можливі відповіді функції у разі помилок:**

**wrong tariff\_id** — передано некоректне значення **tariff\_id**

**customer not found** — користувач не зареєстрований як студент.
{% endhint %}

## Як видалити доступ до курсу студента через бот&#x20;

### del\_customer\_from\_course(**course\_id, email**)

Для цього вкажіть функцію в Block Calculator  **del\_customer\_from\_course(course\_id, email)**

| Параметри                                                      | Опис                      |
| -------------------------------------------------------------- | ------------------------- |
| <mark style="color:червоний;">**!**</mark>**&#x20;tariff\_id** | ID тарифного плану        |
| <mark style="color:червоний;">**!**</mark>**&#x20;email**      | електронна адреса клієнта |

## Як перевірити, чи був студент на вебінарі&#x20;

### customer\_was\_on\_translation()

Доступ до курсу потрібно надати в боті.

Для цього є функція [register\_customer\_on\_course()](https://docs.salebot.pro/onlain-kursy/sozdanie-kursov/chat-bot-dlya-onlain-kursa#kak-vydat-dostup-k-kursu-cherez-bot-register_customer_on_course) і [access\_course\_from\_webapp()](https://docs.salebot.pro/onlain-kursy/sozdanie-kursov/chat-bot-dlya-onlain-kursa#kak-vydat-dostup-k-kursu-cherez-web-app-telegramm)

Щоб перевірити, чи був студент на вебінарі чи ні, вкажіть функцію в Block Calculator customer\_was\_on\_translation(translation\_guid, email, after\_start\_time)

| Обов’язкові параметри                                                                                                                                                                | Необов’язковий параметр                                                       |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- |
| <p><mark style="color:червоний;"><strong>!</strong></mark> translation\_guid - ID трансляції. Скопіюйте значення поля </p><p><em>Назва є в посиланні налаштувань трансляції</em></p> | after\_start\_time - час початку трансляції у форматі: '2023-04-18 13:30:00'. |
| <mark style="color:червоний;">**!**</mark> email - електронна адреса студента                                                                                                        |                                                                               |

{% hint style="warning" %}
**Зверніть увагу!** Ім’я змінної може бути будь-яким, зручним і зрозумілим для вас. У разі помилки в написанні параметрів функції в змінну буде записано повідомлення:  wrong translation\_guid

У цьому випадку рекомендуємо перевірити параметри функції та протестувати їх ще раз. Щоб отримати значення тривалості перебування на вебінарі зі змінної в Calculator, можна скористатися функцією роботи з масивами та словниками. ссылка/ссылка [масивами](https://docs.salebot.pro/peremennye-1/rabota-s-massivami-i-slovaryami/rabota-s-massivami#kak-poluchit-element-massiva) і [словниками](https://docs.salebot.pro/peremennye-1/rabota-s-massivami-i-slovaryami/rabota-so-slovaryami#kak-poluchit-znachenie-slovarya-po-klyuchu).

Приклад налаштувань у Block Calculator:

time\_spent1 = answer2\[0]\['time\_spent']
{% endhint %}

## Як знайти ім’я студента, прив’язане до бота?

Бувають випадки, коли студенти можуть бути прив’язані до онлайн-чату особистого кабінету студента, а також ті, хто прив’язаний до месенджера і пише вашим кураторам через бот. Щоб коректно видавати іменні сертифікати про завершення курсу в боті й не шукати ім’я студента в списку, є функція:

get\_customer\_name() - повертає ім’я студента, пов’язаного з клієнтом.

Функція без параметрів.

<div data-with-frame="true"><figure><img src="/files/70b3c20c546c523098d2a02a7846017850b0f332" alt="" width="563"><figcaption></figcaption></figure></div>

Повертає ім’я студента, яке студент вказав під час реєстрації на курс, або ім’я студента з його особистого кабінету.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/uk/lms/yak-prodavati-kursi/prodazh-kursiv-u-chatboti/funkciyi-kalkulyatora-dlya-kursiv.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
