> For the complete documentation index, see [llms.txt](https://rules.flipside.net.ua/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rules.flipside.net.ua/guide/bank.md).

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

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

{% 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>
