# Банк на сервері

## Загальний список бот-команд пов'язаних з банком

{% hint style="info" %}
Всі команди в даному списку є слеш-командами, тобто їх треба прописувати через /
{% endhint %}

<table><thead><tr><th width="170">Команда</th><th width="292">Функціонал</th><th width="131">Доступність<select><option value="yBv0LhjzJa2T" label="Всі" color="blue"></option><option value="GBejjgHmyenw" label="СБФ" color="blue"></option><option value="KqblpYCqxDYa" label="Суд" color="blue"></option><option value="1K1PNJom5cPu" label="СБФ &#x26; Суд" color="blue"></option><option value="zIZAZGV34oIr" label="Президент" color="blue"></option><option value="r74eqR7wOugc" label="Банк" color="blue"></option></select></th><th data-type="checkbox">Доступність в ПП</th></tr></thead><tbody><tr><td>рахунки</td><td>Перегляд рахунків користувача</td><td><span data-option="yBv0LhjzJa2T">Всі</span></td><td>true</td></tr><tr><td>створити_карту</td><td>Створення приватного рахунку користувачка</td><td><span data-option="yBv0LhjzJa2T">Всі</span></td><td>false</td></tr><tr><td>поділитись</td><td>Поділитись доступом до вашого рахунку з іншим гравцем</td><td><span data-option="yBv0LhjzJa2T">Всі</span></td><td>false</td></tr><tr><td>забрати_доступ</td><td>Позбавити стороннього гравця доступу до вашого рахунку</td><td><span data-option="yBv0LhjzJa2T">Всі</span></td><td>false</td></tr><tr><td>переказ</td><td>Зробити переказ ДР (Діамантової Руди) іншому гравцю</td><td><span data-option="yBv0LhjzJa2T">Всі</span></td><td>false</td></tr><tr><td>штраф</td><td>Виписати гравцю штраф</td><td><span data-option="1K1PNJom5cPu">СБФ &#x26; Суд</span></td><td>false</td></tr><tr><td>юр_рахунок</td><td>Створити для гравця юридичний рахунок</td><td><span data-option="zIZAZGV34oIr">Президент</span></td><td>false</td></tr><tr><td>add_money</td><td>Покласти на рахунок користувача ДР</td><td><span data-option="r74eqR7wOugc">Банк</span></td><td>false</td></tr><tr><td>remove_money</td><td>Зняти з рахунка користувача ДР</td><td><span data-option="r74eqR7wOugc">Банк</span></td><td>false</td></tr><tr><td>налаштування</td><td>Видалення карток, підключення API сповіщень</td><td><span data-option="yBv0LhjzJa2T">Всі</span></td><td>false</td></tr></tbody></table>

## Комісії банку

1. Комісія на зняття ДР з рахунку - 10% або мінімум 1 ДР (джерело зняття комісії(з рахунку в банку/з отриманих ДР) обирає клієнт). Комісія на зняття ДР з рахунків не поширюється на рахунки підприємців, які згадані у зареєстрованих ліцензіях на бізнес і що займаються благодійністю і були згадані у наказі Президентом або Головою банку як такі, що звільняються від комісії у зв'язку зі згаданими підставами.
2. Комісія на зняття з ДР з рахунків особи, яка оформила кредит і є у процесі його сплати або отримання - 20% або мінімум 3 ДР (джерело зняття комісії(з рахунку в банку/з отриманих ДР) обирає клієнт).

## Як покласти кошти на рахунок?

{% hint style="info" %}

### Для банкірів:

Створено дві відповідні команди, при написанні яких потрібно указати номер рахунку і суму

![](/files/ixDGKZ54emhe0cEjGV3U)![](/files/wb5hQSltkXgD5gCDwv47)
{% endhint %}

Для того щоб покласти ДР на свій рахунок в банку є 2 способи

{% stepper %}
{% step %}

### Через банкіра одразу

Якщо на сервері онлайн знаходиться банкір, то ви можете попросити його зайти в банк, і на другому поверсі через нього покласти ДР собі на рахунок

<figure><img src="/files/1xm33Byr9kk9fJmhAuHx" alt=""><figcaption><p>Фото місця де можна покласти кошти через банкіра</p></figcaption></figure>
{% endstep %}

{% step %}

### Через "Банкомат"

Якщо на сервері нема банкіра, то на першому поверсі ви можете залишити у вільному "Банкоматі"(бочні) свої ДР, і написати банкіру в приватні повідомлення Діскорд номер "Банкомата"(він зображений на бочці), суму ДР і номер рахунку на який ви хочете покласти кошти

<figure><img src="/files/8Vz8pQWQegvGYGYhKhqd" alt=""><figcaption><p>Скріншот зроблено в тестовому світі для будівель, на самому сервері бочки пронумеровані</p></figcaption></figure>
{% endstep %}
{% endstepper %}

## Штрафи

### Інформація по оплаті

В спеціальному каналі для вас може бути призначено штраф за якесь порушення.\
Для оплати в повідомленні є кнопка "Сплатити штраф", після натискання якої з'явиться приватне повідомлення з вибором вашої картки, після вибору якої штраф буде сплачено.\
Після оплати потрібно повідомити про це Службу Безпеки Фліпсайд

{% hint style="warning" %}
Не рекомендується намагатись більше декількох раз оплатити один і той самий штраф, бо бот може за ці рази теж списувати ДР

!!! Цю проблему буде віришено найближчим часом
{% endhint %}

### Інформація для СБФ і Суду

#### Як виписати штраф:

{% stepper %}
{% step %}

### Під час написання команди, потрібно обрати корситувача якому призначено штраф

<div align="left"><figure><img src="/files/8BZ2aij8xxpu6P1yZLQs" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

### Після написання команди відкривається вікно, в якому потрібно заповнити декілька пунктів

1. Суму штрафу
2. Номер картки на яку мають прийти кошти після оплати штрафу
3. Причина, за якою було виписано штраф. Держ службовцям рекомендується в цьому полі також вписувати номер штрафу.

<div align="left"><figure><img src="/files/T53eeNe7AWbk8NXo71a6" alt=""><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

## Створення рахунків

Після написання відповідної команди відкриється вікно, де потрібно вказати назву рахунку

{% hint style="info" %}
Змінити назву рахунку на даний момент неможливо
{% endhint %}

<div align="left"><figure><img src="/files/tuNInpdiqGcc8R0OX11d" alt=""><figcaption></figcaption></figure></div>

Після написання назви рахунку, у вас буде створено рахунок, з випадково згенерованим номером з 5 чисел

## Як поділитись рахунком?

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

<div align="left"><figure><img src="/files/Jdf5pQA40yepCe5Rfzby" alt=""><figcaption><p>Написання команди</p></figcaption></figure></div>

Щоб забрати доступ, потрібно написати відповідну команду і там обрати рахунок

<div align="left"><figure><img src="/files/jSKi7NbD0QYNgenQMb7x" alt=""><figcaption></figcaption></figure></div>

## Як переказати кошти?

{% stepper %}
{% step %}

### Написання команди

Потрібно написати відповідну команду, де указати номер отримувача

<div align="left"><figure><img src="/files/fE3LPGJRsNHp4Pu360BY" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

### Вибір картки

В наступному повідомленні треба обрати картку з якої робити переказ

<div align="left"><figure><img src="/files/E3m3PG1nScPrIgiWgPiN" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

### Сума і коментар

Потрібно указати суму переказу, а також написати коментар(не обов'язковий пункт)

<div align="left"><figure><img src="/files/AWnQ2HOhXf3rvPcfsvTK" alt=""><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

## Створення юридичного рахунку

Для створення юридичного рахунку потрібно звернутись до президента, після чого він має написати спеціальну команду

{% stepper %}
{% step %}

### Написання команди

<div align="left"><figure><img src="/files/IJJ6Cw9oSq19Ih8BFG3m" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

### Вибір назви

В вікні яке відкриється потрібно указати назву юридичного рахунку

<div align="left"><figure><img src="/files/k17qhpYXP0MQqkYu1IMl" alt=""><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

## Налаштування

Після написання відповідної команди, з'являється повідомлення з трьома кнопками

<div align="left"><figure><img src="/files/3nNsJbRBcIjORKs2k3fO" alt=""><figcaption></figcaption></figure></div>

### Видалення картки

Після натискання кнопки, з'являється меню вибору, де потрібно обрати картку яку ви хочете видалити

{% hint style="danger" %}
Не забудьте зняти з картки яку хочете видалити всі ДР, бо після видалення це вже буде зробити неможливо
{% endhint %}

<div align="left"><figure><img src="/files/2XnJEYR1Dmla8BadS3Hq" alt=""><figcaption></figcaption></figure> <figure><img src="/files/ARbAIFWK2zb5BF8W7lBU" alt=""><figcaption></figcaption></figure></div>

### API сповіщення

Після натискання кнопки, з'являється меню вибору, де потрібно обрати ваш юридичний рахунок, до якого ви хочете підключити API сповіщення

<div align="left"><figure><img src="/files/jba1Ma6bukGbZpmbKNdu" alt=""><figcaption></figcaption></figure></div>

Після вибору рахунку, з'явиться вікно, в якому потрібно вказати посилання на вебхук, на який будуть приходити API сповіщення (вони є повідомленнями у JSON форматі)

<div align="left"><figure><img src="/files/4DTv3R77wcH8OpFLar1S" alt=""><figcaption></figcaption></figure></div>

Після вписання посилання на вебхук, потрібно натиснути кнопку "Надіслати", і тоді ваш вебхук буде приєднано до рахунку

{% hint style="info" %}
Для видалення вебхуку, потрібно натиснути "Видалити API сповіщення"
{% endhint %}

Після успішного приєднання вебхуку, при переказах буде надсилатись повідомлення у JSON форматі

{% code title="Контент повідомлення (він відправляється у вигляді блока коду)" %}

```json
{
  "type": "transfer_received",
  "from_account_number": "00000",
  "from_user_id": 000000000000000000,
  "to_account_number": "00000",
  "to_user_id": 000000000000000000,
  "amount": 2,
  "comment": "Parcel delivery"
}
```

{% endcode %}

### Приклад використання API сповіщень

Такі сповіщення про перекази були створені для того, щоб користувачі могли робити автоматизації платежів, проте в цьому прикладі буде показано код бота, який пише подяку за переказ

{% code title="приклад бота" %}

````python
import disnake
from disnake.ext import commands
import json
import config

# ID каналу, в якому бот буде реагувати на повідомлення
CHANNEL_ID = 0000000000000000000 # Замініть на реальний ID каналу

intents = disnake.Intents.default()
intents.messages = True
intents.message_content = True

bot = commands.Bot(command_prefix="!", intents=intents)

@bot.event
async def on_ready():
    print(f"✅ Logged in as {bot.user}")

@bot.event
async def on_message(message: disnake.Message):
    # Дозволяємо лише канал і повідомлення з вебхука
    if message.channel.id != CHANNEL_ID:
        return
    if message.webhook_id is None and message.author.bot:
        return

    # Перевіряємо чи є блок коду з json
    if message.content.startswith("```json") and message.content.endswith("```"):
        try:
            # Видаляємо перший та останній рядки
            lines = message.content.strip().splitlines()
            # ['```json', '{', '  "type": "...', '}', '```']
            json_lines = lines[1:-1]
            json_str = "\n".join(json_lines)

            data = json.loads(json_str)

            if data.get("type") == "transfer_received":
                user_id = data.get("to_user_id")
                amount = data.get("amount")
                comment = data.get("comment", "")

                mention = f"<@{user_id}>"
                response = (
                    f"💸 Дякуємо {mention} за переказ у розмірі {amount} ДР!\n"
                    f"💬 Коментар: {comment}"
                )

                await message.channel.send(response)

        except Exception as e:
            await message.channel.send(f"❌ Не вдалося обробити JSON: {e}")

bot.run("YOUR_BOT_TOKEN")
````

{% endcode %}

Зверніть увагу, що повіломлення від вебхуку в сам діскорд надсилається в такому вигляді:

````
```json
{
  "type": "transfer_received",
  "from_account_number": "00000",
  "from_user_id": 000000000000000000,
  "to_account_number": "00000",
  "to_user_id": 000000000000000000,
  "amount": 5,
  "comment": "comment"
}
```
````

Результат роботи бота:

<div align="left"><figure><img src="/files/wHkwokLZfNT5ipTDxe20" alt=""><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://rules.flipside.net.ua/guide/bank.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.
