# Методи гейміфікації

## Методи гейміфікації в Instagram і Facebook&#x20;

{% hint style="warning" %}
Для налаштування операцій функцій рекомендуємо використовувати гейміфікацію[ шаблон для чатів Instagram як довідку](#gamification-methods-in-instagram-and-facebook).&#x20;
{% endhint %}

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

<table data-header-hidden><thead><tr><th width="270.3333333333333">Назва змінної</th><th width="323">Призначення змінної</th><th align="center">Значення, приклад</th></tr></thead><tbody><tr><td>comment_score</td><td>скільки балів нараховувати за коментарі</td><td align="center">10</td></tr><tr><td>comment_max_actions </td><td>максимальна кількість коментарів на день</td><td align="center">5</td></tr><tr><td>min_comment_len</td><td>мінімальна довжина коментаря</td><td align="center">25</td></tr><tr><td>stories_score</td><td>скільки балів нараховувати за реакції в історіях</td><td align="center">15</td></tr><tr><td>stories_max_actions</td><td>максимальна кількість дій на день</td><td align="center">1</td></tr><tr><td>stories_mention_score</td><td>скільки балів нараховувати за згадки в історіях</td><td align="center">5</td></tr><tr><td>stories_mention_max_actions</td><td>максимальна кількість дій на день</td><td align="center">2</td></tr><tr><td>post_mention_score</td><td>скільки балів нараховувати за згадки в дописі</td><td align="center">10</td></tr><tr><td>post_mention_max_actions</td><td>максимальна кількість дій на день</td><td align="center">3</td></tr><tr><td>end_game_date</td><td>дата завершення гри</td><td align="center">30.12.2021</td></tr></tbody></table>

**game\_add\_comment**(text=None) - додає бали за коментар в Instagram або FB; ви також можете передати будь-який текст.

**game\_add\_stories**() - додає бали за реакції в історіях

**game\_add\_message**() - додає бали за Direct-повідомлення

**game\_add\_stories\_mention**() - додає бали за згадки в історіях

**game\_get\_user\_score**() - повертає бали користувача

**game\_get\_user\_place**() - показує позицію користувача в рейтингу

**game\_get\_leader\_score**() - повертає бали лідера в рейтингу

**game\_get\_top(count=99999999, shift=0, humanize=False, delimiter=None, platform=None)** - виклик функції без аргументів повертає відсортований рейтинг у вигляді масиву користувачів. Вона приймає такі 5 параметрів: **count** - скільки користувачів повернути; **shift** - початкова позиція в рейтингу для вибірки (0 означає, що список починається з лідера і далі йде вниз за балами; наприклад, 3 означає, що вибірка починається з 4-го місця і нижче); **humanize** **0** - повертає масив словників користувачів, **1** повертає відформатований список для показу користувачу; **delimiter** - роздільник між іменем користувача та його балом (використовується, якщо **humanize=1**); **platform 1** - виводить логін Instagram (наприклад, **@nik**) замість імені користувача.

Приклад 1: game\_get\_top(10, 0, 1, ' - ') поверне: John - 40 Anna - 30 George - 10\
\
Приклад 2: game\_get\_top(3, 0, 1, ' - ', 1) поверне: @john - 40 @anna - 30 @privet - 10&#x20;

**game\_add\_score**(count=1, client\_id=None) - додає бали користувачу

**game\_set\_score**(score, client\_id=None) - встановлює загальну кількість балів користувача

**game\_ban\_player**() - блокує користувача

**game\_unban\_player**() - розблоковує користувача

**game\_user\_banned**() - повертає статус блокування користувача; True, якщо заблоковано, False, якщо ні

\# дозволяє працювати з довільними значеннями в таблиці лідерів.&#x20;

**game\_add\_value**(val\_name, count=1, client\_id=None) -&#x20;

**game\_set\_value**(val\_name, value, client\_id=None)

{% hint style="info" %}
Якщо **client\_id** не вказано, функція працює з поточним клієнтом.
{% endhint %}

**game\_minus\_user\_score**(count =10) - віднімає бали у користувача (**count** - скільки балів відняти)

**game\_get\_today\_user\_comment\_action**() - кількість коментарів, зроблених користувачем сьогодні

**game\_get\_today\_user\_message\_actions**() - кількість повідомлень, надісланих користувачем сьогодні

**game\_get\_today\_user\_stories\_actions**() - кількість історій, опублікованих користувачем сьогодні

**game\_get\_today\_user\_mention\_actions**() - кількість дій користувача (згадок) сьогодні

**game\_get\_today\_user\_post\_mention\_actions**() - кількість дописів зі згадками, зроблених користувачем сьогодні

**game\_get\_total\_comment\_action**() - загальна кількість коментарів за всю гру

**game\_get\_total\_message\_actions**() -  загальна кількість повідомлень за всю гру

**game\_get\_total\_stories\_actions**() - загальна кількість історій за всю гру

**game\_get\_total\_stories\_mention\_actions()** - загальна кількість згадок в історіях за всю гру

**game\_get\_total\_post\_mention\_actions()** - загальна кількість згадок у дописах за всю гру

## Отримання рейтингу в Telegram &#x20;

{% hint style="warning" %}
Для налаштування операцій функцій рекомендуємо використовувати гейміфікацію[ шаблон для чатів Telegram як довідку](#getting-ranking-in-telegram).
{% endhint %}

У глобальних змінних потрібно створити словник із назвою tg\_thanks\_score\_data для зберігання інформації про клієнтів у такому форматі:

`{"total_thanks":20,"326659632":{"name":"John","user_name":"john","score":5},"403051597":{"name":"Timm","user_name":"dbeing","score":15,"banned":false}}`

**tg\_get\_top(count=99999999, shift=0, humanize=False, delimiter=None)**&#x20;

Параметри:&#x20;

**count** - скільки користувачів повернути\
**shift** - початкова позиція в рейтингу для вибірки (0 означає, що список починається з лідера і далі йде вниз за балами; наприклад, 3 означає, що вибірка починається з 4-го місця і нижче)\
**humanize** - 0 повертає масив словників користувачів, 1 повертає відформатований список для показу користувачу\
**delimiter** -  роздільник між іменем користувача та його балом (використовується, якщо humanize=1)

**tg\_get\_user\_info()**

{'score': user\_score, 'place': place, 'name': name}


---

# 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/chatbot/functions/kalkulyator/gamification.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.
