<div align="center">

  <p>
    <img src="https://cdn-icons-png.flaticon.com/512/9898/9898172.png" alt="icon" width="128" height="128">
  </p>

  <h1>Telegraf-tools</h1>

  <p>Пакет который включает в себя множество дополнений для удобной работы с библиотекой Telegraf, данный пакет упростит работу с кодом, а так-же улучшит его функциональность.</p>
</div>


## Установка

Установка через node:

```shell
$ npm i telegraf-tools
```

Импортируйте модуль:

```js
const { loadlib, createJsonBase, logger, checkFileExists, renameLib, folderLoader, multipleLoader } = require('telegraf-tools')(bot);
```

<h2>Список методов</h2>

<ul>
  <li><a href="#loadlib">loadlib()</a></li>
  <li><a href="#logger">logger()</a></li>
  <li><a href="#createJsonBase">createJsonBase()</a></li>
  <li><a href="#multipleLoader">multipleLoader()</a></li>
  <li><a href="#checkFileExists">checkFileExists()</a></li>
  <li><a href="#renameLib">renameLib()</a></li>
  <li><a href="#folderLoader">folderLoader()</a></li>
</ul>

Пример использования JsonBase:

```js
const { Telegraf } = require('telegraf');
require('dotenv').config();
const bot = new Telegraf(process.env.BOT_TOKEN);
const { createJsonBase } = require('telegraf-tools');

createJsonBase()

bot.context.user = bot.context.tools.Users(() => {
    is_admin: false,
    // etc
})

bot.context.chats = bot.context.tools.JsonBase("filename", [])

// Создается файл filename.json с пустым массивом в папку database, если ее нету создает собственоручно

bot
.launch({dropPendingUpdates: true})
.then(() => console.log('Бот запущен!'))
.catch((err) => console.error(err));
```

Так-же вы можете упростить задачу транспартировки базы данных:

```js
bot
.use((ctx, next) => {
    if (!ctx.from) return;
    ctx.user = ctx.users.get(ctx.from, true);
    return next();
})
```

методы JsonBase:

```js
const user = ctx.users.get(ctx.from, true); // если нужно создавать пользователя true, если нет ничего не пишем

user.edit("key", "value"); // изменить параметр в базе данных пользователя

users.getArray(); // получить базу данных пользователей в виде массива
```

Методы:

<h1 id="loadlib">loadlib()</h1>

Метод для загрузки локальных библиотек.

```js
loadlib(filename: string, defaultPath?: string) => void
```
| Параметр | Тип | Описание |
|----------|----------|----------|
| filename    | string   | Название файла   |
| defaultPath   | string   | Путь до файла, указывать только если файл не в корне   |

<h1 id="logger">logger()</h1>

Метод для вывода логов в консоль с подсветкой текста разными цветами.

```js
logger.log(text: string, extra?: object) => void
```
| Параметр | Тип | Описание |
|----------|----------|----------|
| text    | string   | Текст лога   |
| extra   | object   | Объект цветов и их сочетаний   |

<h1 id="createJsonBase">createJsonBase()</h1>

Метод для создания json-файла для хранения базы данных в папке database.

```js
createJsonBase() => void
```

<h1 id="multipleLoader">multipleLoader()</h1>

Метод для загрузки нескольких локальных библиотек одновременно.

```js
multipleLoader(libs: [], defaultPath?: string) => void
```
| Параметр | Тип | Описание |
|----------|----------|----------|
| libs    | array   | Названия файлов   |
| defaultPath   | string   | Путь до файлов, указывать только если файлы не в корне   |

<h1 id="checkFileExists">checkFileExists()</h1>

Метод для проверки наличия файла по заданному пути.

```js
checkFileExists(filePath: string) => boolean
```
| Параметр | Тип | Описание |
|----------|----------|----------|
| filePath    | string   | Путь до файла   |

<h1 id="renameLib">renameLib()</h1>

Метод для загрузки нескольких локальных библиотек одновременно.

```js
renameLib(oldName: string, newName: string) => void
```
| Параметр | Тип | Описание |
|----------|----------|----------|
| oldName    | string   | Название старой библиотеки   |
| newName   | string   | Желаемое название   |

<h1 id="folderLoader">folderLoader()</h1>

Метод для загрузки всех файлов из указанной директории.

```js
folderLoader(folderPath: string) => void
```
| Параметр | Тип | Описание |
|----------|----------|----------|
| folderPath    | string   | Путь к папке с библиотеками   |
