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

## Методы геймификации в 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**() - добавляет очки за личные сообщения

**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/ru/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.
