# NyxPy
## _Библиотека для взаимодействия с Nyx, бесплатного аналога Discord_

NyxPy - это свободная и бесплатная библиотека для создания ботов для социальной сети и мессенджера Nyx. Nyx - бесплатный аналог Discord, который не боится блокировок.

NyxPy отличается...
- СКОРОСТЬЮ! Мы не используем перегруженные библиотеки и представляем лишь оболочку для взаимодействия с Nyx
- АСИНХРОННОСТЬЮ! Библиотека полностью асинхронная
- СТАБИЛЬНОСТЬЮ! На данный момент мы являемся самой обновляемой и проверенной библиотекой для разработки под Nyx.

## Использование

Для начала вам необходимо создать экземпляр вашего клиента. Один клиент - один пользователь:
```python
from nyxpy import (
    NyxClient
)

nyx = NyxClient()
```

После этого необходимо авторизоваться:
```python
email = "ваша почта"
password = "ваш пароль"

await nyx.login(email, password)
```

Всё! Теперь вам доступны все функции. Например, вы можете подписаться на обновления в реальном времени:
```python
@nyx_event(type=nyx_event.NEW_MESSAGE) # новое сообщение
async def on_message(ev):
    if ev.data["sender_id"] == nyx.current_user.id: # игнорируем наши же сообщения
        return

    await nyx.reply(ev, f"Привет, {ev.data["member"]["username"]}!")

...

# подписываемся
await nyx.connect_ws()
await nyx.ws_subscribe_all()
```

Либо просто отправляем HTTP запросы:
```python
channels = await nyx.get_channels(server_id)
```

Больше примеров тут: https://github.com/kolya5544/NyxPy/tree/master/examples


## Функции

| Функция                | Статус  | Заметки |
|------------------------|---------|-------|
| Аутентификация         | ПОДДЕРЖИВАЕТСЯ | Используйте email + пароль для аутентификации в Nyx |
| Получение событий в реальном времени    | ПОДДЕРЖИВАЕТСЯ | Получайте новые сообщения, предложения дружбы и другие обновления в реальном времени |
| Отправка сообщений | Частично поддерживается | Отвечайте на сообщения, отправляйте свои сообщения. Загрузка файлов пока не поддерживается |
| Получение ролей, каналов, серверов, список предложений дружбы | ПОДДЕРЖИВАЕТСЯ | Можно получить полный список |
| Добавление в друзья | ПОДДЕРЖИВАЕТСЯ | Полностью поддерживается |
| Иные функции | Запланированы (делитесь идеями в issues -> https://github.com/kolya5544/NyxPy/issues) | Скоро всё будет |

## Технологии

NyxPy использует несколько библиотек для работы:

- websockets - для подключений по WebSocket
- httpx - для отправки HTTP запросов
- asyncio - для асинхронной работы

## Установка

NyxPy требует Python версии не ниже 3.11.

Установка производится командой:
```bash
pip install nyxpy
```

## Разработка

Хотите помочь с разработкой! Без проблем, оставьте ваш Pull Request. Качественные изменения в код будут приняты.

## Лицензия

MIT
