Metadata-Version: 2.4
Name: AstrixLibrary
Version: 1.1.1
Summary: Python библиотека для создания ботов AstrixRU
Home-page: https://astrixru.online
Author: AstrixRU
Author-email: astrix.ru.official@gmail.com
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: websockets>=10.0
Requires-Dist: aiohttp>=3.8.0
Requires-Dist: typing-extensions>=4.0.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# AstrixLibrary

Библиотека для создания ботов для платформы AstrixRU с использованием WebSocket.
```bash
pip install websockets aiohttp
```

## Быстрый старт

```python
from AstrixLibrary import AstrixBot, Context, Message

bot = AstrixBot(token="YOUR_BOT_TOKEN")

@bot.on_message()
async def on_message(ctx: Context, message: Message):
    print(f"Сообщение: {message.text}")

@bot.command("start", "Запуск бота")
async def cmd_start(ctx: Context):
    await ctx.send("Привет! Я бот!")

bot.run()
```

## Основные возможности

### 1. Обработчики событий

```python
# Все сообщения
@bot.on_message()
async def on_message(ctx: Context, message: Message):
    await ctx.send("Получил сообщение!")

# Реакции
@bot.on_reaction()
async def on_reaction(data):
    print(f"Реакция: {data}")
```

### 2. Команды

```python
# Простая команда
@bot.command("ping", "Проверка бота") # Второй аргумент "Проверка бота" нужен для того, чтобы в будущем был выпадающий список, и была команда а внизу ее описание, значит второй аргумент - описание команды.
async def cmd_ping(ctx: Context):
    await ctx.send("Понг!")

# Команда с аргументами
@bot.command("echo", "Повторить текст")
async def cmd_echo(ctx: Context, args):
    await ctx.send(f"🔊 {' '.join(args)}")
```

### 3. Context методы

```python
@bot.on_message()
async def on_message(ctx: Context, message: Message):
    # Отправить сообщение
    await ctx.send("Привет!")
    
    # Ответить на сообщение
    await ctx.reply("Ответ на ваше сообщение")
    
    # Удалить сообщение
    await ctx.delete()
    
    # Поставить реакцию
    await ctx.react("👍")
    
    # Редактировать сообщение
    await ctx.edit("Новый текст")
```

### 4. API методы бота

```python
# Отправка сообщения
await bot.send_message(chat_id, "Текст")

# Удаление сообщения
await bot.delete_message(chat_id, message_id)

# Редактирование
await bot.edit_message(message_id, "Новый текст")

# Реакции
await bot.add_reaction(message_id, "👍")
await bot.remove_reaction(message_id, "👍")

# Печать
await bot.start_typing(chat_id) # Внимание! Данный метод еще пока что не работает.

# Получить пользователя
user = await bot.find_user("nickname") # Внимание! Данный метод еще пока что не реализован. Скоро он появится в библиотеке.

# История чата
history = await bot.get_chat_history(chat_id, limit=50)
```

## Примеры использования

### Эхо-бот

```python
from AstrixLibrary import AstrixBot, Context, Message

bot = AstrixBot(token="YOUR_TOKEN")

@bot.on_message()
async def on_message(ctx: Context, message: Message):
    if message.text.startswith("!"):
        await ctx.send(message.text[1:])

bot.run()
```

### Бот с командами

```python
from AstrixLibrary import AstrixBot, Context

bot = AstrixBot(token="YOUR_TOKEN")

@bot.command("start", "Запуск")
async def cmd_start(ctx: Context):
    await ctx.send("Привет! Используй /help для списка команд.")

@bot.command("help", "Помощь")
async def cmd_help(ctx: Context):
    await ctx.send(
        "📚 Команды:\n"
        "/start - Запуск\n"
        "/help - Помощь\n"
        "/ping - Проверка"
    )

@bot.command("ping", "Проверка")
async def cmd_ping(ctx: Context):
    msg = await ctx.send("Понг!")
    await asyncio.sleep(2)
    await msg.edit("Бот работает!")

bot.run()
```

### Получение токена

1. Зарегистрируйтесь в AstrixRU, а затем зайдите на страницу https://astrixru.online/developers/bots.
2. Нажмите "Создать бота"
3. Заполните всю информацию о боте, нажмите создать.
4. Скопируйте токен

## Поддержка

- Telegram: @astrixru
- Документация: https://astrixru.online/developers/bots

## Лицензия

MIT License
