chatlabs-support


Namechatlabs-support JSON
Version 0.1.4 PyPI version JSON
download
home_pagehttps://github.com/RostHarcha/chatlabs-support
SummaryNone
upload_time2025-01-04 14:06:35
maintainerNone
docs_urlNone
authorRostislaww
requires_python<4.0,>=3.11
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Закладки
- [ChatLabs Support](#chatlabs-support)
    - [Aiogram Support](#chatlabs-aiogram-support)
        - [Установка](#chatlabs-aiogram-support---установка)
    - [Django Support](#chatlabs-django-support)
        - [Установка](#chatlabs-django-support---установка)
        - [Отправляемые сообщения](#chatlabs-django-support---отправляемые-сообщения)
        - [Получаемые сообщения](#chatlabs-django-support---Получаемые-сообщения)

# ChatLabs Support

## ChatLabs Aiogram Support

### ChatLabs Aiogram Support - Установка

`pip install chatlabs-support[chatlabs_aiogram_support]`

Необходимые переменные окружения:
- `BACKEND_SCHEMA`
- `BACKEND_HOST`
- `BACKEND_PORT`

Добавление роутера поддержки в диспетчер:
```python
from aiogram import Dispatcher

from chatlabs_support import chatlabs_aiogram_support as support

dp = Dispatcher()

dp.include_router(support.dialog_router)
```

Добавление кнопки поддержки в окно:
```python
from aiogram_dialog import Dialog, Window
from aiogram_dialog.widgets.kbd import Start
from aiogram_dialog.widgets.text import Const

from chatlabs_support import chatlabs_aiogram_support as support

Dialog(
    ...,
    Window(
        ...,
        Start(
            text=Const('Поддержка'),
            id='support',
            state=support.main_state,
        ),
        ...,
    ),
    ...,
)
```

Альтернативный вариант:
```python
from aiogram_dialog import Dialog, Window

from chatlabs_support import chatlabs_aiogram_support as support

Dialog(
    ...,
    Window(
        ...,
        support.SupportStartButton,
        ...,
    ),
    ...,
)
```

## ChatLabs Django Support

### ChatLabs Django Support - Установка

`pip install chatlabs-support[chatlabs_django_support]`

Для привязки тикетов необходимо определить модель пользователя
```python
# myapp/models.py

class MyUser(models.Model):
    telegram_id = models.BigIntegerField(
        primary_key=True,
        unique=True,
    )
    ...
```
Обратите внимание, что наличие в этой модели поля
telegram_id (PK, Unique) - обязательно

```python
# django_project/settings.py

INSTALLED_APPS = [
    'daphne',
    'channels',
    ...,
    'myapp',
    'chatlabs_support.chatlabs_django_support',
]

ASGI_APPLICATION = 'django_project.asgi.application'

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels.layers.InMemoryChannelLayer',
    },
}

SUPPORT_TELEGRAM_USER_MODEL = 'myapp.MyUser'
```

```python
# django_project/asgi.py

import os

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application

from chatlabs_support.chatlabs_django_support.routing import ws_urlpatterns

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'example_project.settings')

application = ProtocolTypeRouter({
    'http': get_asgi_application(),
    'websocket': AuthMiddlewareStack(URLRouter(ws_urlpatterns)),
})
```

```python
# django_project/urls.py

urlpatterns = [
    ...,
    path('support/', include('chatlabs_support.chatlabs_django_support.urls')),
]
```

### ChatLabs Django Support - Отправляемые сообщения

Принять тикет в работу:
```json
{
    "type": "ticket.assign",
    "id": 16 // ID тикета
}
```

Сообщение просмотрено:
```json
{
    "type": "ticket.message.viewed",
    "ticket_id": 16, // ID тикета
    "message_id": 28 // ID сообщения
}
```

Отправить сообщение:
```json
{
    "type": "ticket.message.new",
    "ticket_id": 16, // ID тикета
    "text": "The is some text" // текст сообщения
}
```

Тикет открыт (запросить список сообщений):
```json
{
    "type": "ticket.message.list",
    "ticket_id": 16, // ID тикета
}
```

### ChatLabs Django Support - Получаемые сообщения

Создан новый тикет:
```json
{
    "type": "ticket.created",
    "ticket": {
        "id": 21, // ID тикета
        "user": { // Информация о пользователе
            "telegram_id": 4 // telegram_id пользователя
        },
        "support_manager": null, // назначенный менеджер
        "created_at": "2024-12-29T16:10:38.620768Z", // дата создания
        "title": "have a prob" // заголовок тикета
    }
}
```

Тикет назначен:
```json
{
    "type": "ticket.assigned",
    "id": 16, // ID тикета
    "support_manager": 1, // ID менеджера
}
```

Сообщение просмотрено:
```json
{
    "type": "ticket.message.viewed",
    "message": {
        "id": 29, // ID сообщения
        "created_at": "2024-12-29T15:21:18.498325Z", // дата создания
        "sender": "user", // отправитель, "user" - пользователь, "supp" - менеджер
        "text": "jhklhjbkbklb", // текст сообщения
        "viewed": true, // сообщение просмотрено
        "ticket": 16 // ID тикета
    }
}
```

Новое сообщение:
```json
{
    "type": "ticket.message.new",
    "message": {
        "id": 31, // ID сообщения
        "created_at": "2024-12-29T16:08:04.267002Z", // дата создания
        "sender": "supp", // отправитель, "user" - пользователь, "supp" - менеджер
        "text": "some_text", // текст сообщения
        "viewed": true, // сообщение просмотрено
        "ticket": 16 // ID тикета
    }
}
```

Список сообщений в тикете:
```json
{
    "type": "ticket.message.list",
    "ticket_id": 16, // ID тикета
    "messages": [
        {
            "id": 31, // ID сообщения
            "created_at": "2024-12-29T16:08:04.267002Z", // дата создания
            "sender": "supp", // отправитель, "user" - пользователь, "supp" - менеджер
            "text": "some_text", // текст сообщения
            "viewed": true, // сообщение просмотрено
            "ticket": 16 // ID тикета
        },
        {
            "id": 30, // ID сообщения
            "created_at": "2024-12-29T15:22:01.299698Z", // дата создания
            "sender": "user", // отправитель, "user" - пользователь, "supp" - менеджер
            "text": "jhklhjbkbklb", // текст сообщения
            "viewed": false, // сообщение просмотрено
            "ticket": 16 // ID тикета
        },
    ]
}
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/RostHarcha/chatlabs-support",
    "name": "chatlabs-support",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": null,
    "author": "Rostislaww",
    "author_email": "rostiki.com@mail.ru",
    "download_url": "https://files.pythonhosted.org/packages/63/67/e27039df96ee6cae02728e0591e82f424e404f4034491a2ad88600e428f0/chatlabs_support-0.1.4.tar.gz",
    "platform": null,
    "description": "# \u0417\u0430\u043a\u043b\u0430\u0434\u043a\u0438\n- [ChatLabs Support](#chatlabs-support)\n    - [Aiogram Support](#chatlabs-aiogram-support)\n        - [\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430](#chatlabs-aiogram-support---\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430)\n    - [Django Support](#chatlabs-django-support)\n        - [\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430](#chatlabs-django-support---\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430)\n        - [\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f](#chatlabs-django-support---\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f)\n        - [\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f](#chatlabs-django-support---\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0435-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f)\n\n# ChatLabs Support\n\n## ChatLabs Aiogram Support\n\n### ChatLabs Aiogram Support - \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n`pip install chatlabs-support[chatlabs_aiogram_support]`\n\n\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:\n- `BACKEND_SCHEMA`\n- `BACKEND_HOST`\n- `BACKEND_PORT`\n\n\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440:\n```python\nfrom aiogram import Dispatcher\n\nfrom chatlabs_support import chatlabs_aiogram_support as support\n\ndp = Dispatcher()\n\ndp.include_router(support.dialog_router)\n```\n\n\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u043e\u043a\u043d\u043e:\n```python\nfrom aiogram_dialog import Dialog, Window\nfrom aiogram_dialog.widgets.kbd import Start\nfrom aiogram_dialog.widgets.text import Const\n\nfrom chatlabs_support import chatlabs_aiogram_support as support\n\nDialog(\n    ...,\n    Window(\n        ...,\n        Start(\n            text=Const('\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430'),\n            id='support',\n            state=support.main_state,\n        ),\n        ...,\n    ),\n    ...,\n)\n```\n\n\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:\n```python\nfrom aiogram_dialog import Dialog, Window\n\nfrom chatlabs_support import chatlabs_aiogram_support as support\n\nDialog(\n    ...,\n    Window(\n        ...,\n        support.SupportStartButton,\n        ...,\n    ),\n    ...,\n)\n```\n\n## ChatLabs Django Support\n\n### ChatLabs Django Support - \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n`pip install chatlabs-support[chatlabs_django_support]`\n\n\u0414\u043b\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0442\u0438\u043a\u0435\u0442\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n```python\n# myapp/models.py\n\nclass MyUser(models.Model):\n    telegram_id = models.BigIntegerField(\n        primary_key=True,\n        unique=True,\n    )\n    ...\n```\n\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u043b\u044f\ntelegram_id (PK, Unique) - \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\n\n```python\n# django_project/settings.py\n\nINSTALLED_APPS = [\n    'daphne',\n    'channels',\n    ...,\n    'myapp',\n    'chatlabs_support.chatlabs_django_support',\n]\n\nASGI_APPLICATION = 'django_project.asgi.application'\n\nCHANNEL_LAYERS = {\n    'default': {\n        'BACKEND': 'channels.layers.InMemoryChannelLayer',\n    },\n}\n\nSUPPORT_TELEGRAM_USER_MODEL = 'myapp.MyUser'\n```\n\n```python\n# django_project/asgi.py\n\nimport os\n\nfrom channels.auth import AuthMiddlewareStack\nfrom channels.routing import ProtocolTypeRouter, URLRouter\nfrom django.core.asgi import get_asgi_application\n\nfrom chatlabs_support.chatlabs_django_support.routing import ws_urlpatterns\n\nos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'example_project.settings')\n\napplication = ProtocolTypeRouter({\n    'http': get_asgi_application(),\n    'websocket': AuthMiddlewareStack(URLRouter(ws_urlpatterns)),\n})\n```\n\n```python\n# django_project/urls.py\n\nurlpatterns = [\n    ...,\n    path('support/', include('chatlabs_support.chatlabs_django_support.urls')),\n]\n```\n\n### ChatLabs Django Support - \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n\n\u041f\u0440\u0438\u043d\u044f\u0442\u044c \u0442\u0438\u043a\u0435\u0442 \u0432 \u0440\u0430\u0431\u043e\u0442\u0443:\n```json\n{\n    \"type\": \"ticket.assign\",\n    \"id\": 16 // ID \u0442\u0438\u043a\u0435\u0442\u0430\n}\n```\n\n\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e:\n```json\n{\n    \"type\": \"ticket.message.viewed\",\n    \"ticket_id\": 16, // ID \u0442\u0438\u043a\u0435\u0442\u0430\n    \"message_id\": 28 // ID \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n}\n```\n\n\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:\n```json\n{\n    \"type\": \"ticket.message.new\",\n    \"ticket_id\": 16, // ID \u0442\u0438\u043a\u0435\u0442\u0430\n    \"text\": \"The is some text\" // \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n}\n```\n\n\u0422\u0438\u043a\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442 (\u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439):\n```json\n{\n    \"type\": \"ticket.message.list\",\n    \"ticket_id\": 16, // ID \u0442\u0438\u043a\u0435\u0442\u0430\n}\n```\n\n### ChatLabs Django Support - \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n\n\u0421\u043e\u0437\u0434\u0430\u043d \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043a\u0435\u0442:\n```json\n{\n    \"type\": \"ticket.created\",\n    \"ticket\": {\n        \"id\": 21, // ID \u0442\u0438\u043a\u0435\u0442\u0430\n        \"user\": { // \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\n            \"telegram_id\": 4 // telegram_id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n        },\n        \"support_manager\": null, // \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\n        \"created_at\": \"2024-12-29T16:10:38.620768Z\", // \u0434\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n        \"title\": \"have a prob\" // \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0442\u0438\u043a\u0435\u0442\u0430\n    }\n}\n```\n\n\u0422\u0438\u043a\u0435\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d:\n```json\n{\n    \"type\": \"ticket.assigned\",\n    \"id\": 16, // ID \u0442\u0438\u043a\u0435\u0442\u0430\n    \"support_manager\": 1, // ID \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430\n}\n```\n\n\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e:\n```json\n{\n    \"type\": \"ticket.message.viewed\",\n    \"message\": {\n        \"id\": 29, // ID \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n        \"created_at\": \"2024-12-29T15:21:18.498325Z\", // \u0434\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n        \"sender\": \"user\", // \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c, \"user\" - \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \"supp\" - \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\n        \"text\": \"jhklhjbkbklb\", // \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n        \"viewed\": true, // \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e\n        \"ticket\": 16 // ID \u0442\u0438\u043a\u0435\u0442\u0430\n    }\n}\n```\n\n\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:\n```json\n{\n    \"type\": \"ticket.message.new\",\n    \"message\": {\n        \"id\": 31, // ID \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n        \"created_at\": \"2024-12-29T16:08:04.267002Z\", // \u0434\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n        \"sender\": \"supp\", // \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c, \"user\" - \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \"supp\" - \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\n        \"text\": \"some_text\", // \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n        \"viewed\": true, // \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e\n        \"ticket\": 16 // ID \u0442\u0438\u043a\u0435\u0442\u0430\n    }\n}\n```\n\n\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0442\u0438\u043a\u0435\u0442\u0435:\n```json\n{\n    \"type\": \"ticket.message.list\",\n    \"ticket_id\": 16, // ID \u0442\u0438\u043a\u0435\u0442\u0430\n    \"messages\": [\n        {\n            \"id\": 31, // ID \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n            \"created_at\": \"2024-12-29T16:08:04.267002Z\", // \u0434\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n            \"sender\": \"supp\", // \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c, \"user\" - \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \"supp\" - \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\n            \"text\": \"some_text\", // \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n            \"viewed\": true, // \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e\n            \"ticket\": 16 // ID \u0442\u0438\u043a\u0435\u0442\u0430\n        },\n        {\n            \"id\": 30, // ID \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n            \"created_at\": \"2024-12-29T15:22:01.299698Z\", // \u0434\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\n            \"sender\": \"user\", // \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c, \"user\" - \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \"supp\" - \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\n            \"text\": \"jhklhjbkbklb\", // \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\n            \"viewed\": false, // \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e\n            \"ticket\": 16 // ID \u0442\u0438\u043a\u0435\u0442\u0430\n        },\n    ]\n}\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": null,
    "version": "0.1.4",
    "project_urls": {
        "Homepage": "https://github.com/RostHarcha/chatlabs-support"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7f6b6047136bb690939aa520feae3bb883e5b1ca7304d9a68b34d33a59c21fe7",
                "md5": "a3625cc255b637d60d2550d9f6e6f4f2",
                "sha256": "d2248d78545962e10bd5e7524328ab47df0cb9a68dd25f6e5ba266825c2d7bca"
            },
            "downloads": -1,
            "filename": "chatlabs_support-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a3625cc255b637d60d2550d9f6e6f4f2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 22275,
            "upload_time": "2025-01-04T14:06:33",
            "upload_time_iso_8601": "2025-01-04T14:06:33.171192Z",
            "url": "https://files.pythonhosted.org/packages/7f/6b/6047136bb690939aa520feae3bb883e5b1ca7304d9a68b34d33a59c21fe7/chatlabs_support-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6367e27039df96ee6cae02728e0591e82f424e404f4034491a2ad88600e428f0",
                "md5": "49b30a44d35b313a136c60a1d229f4d5",
                "sha256": "3dab154c24ee2d1f5549d6c555c269fc907d1ff25df18dc985d2740a11b150fa"
            },
            "downloads": -1,
            "filename": "chatlabs_support-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "49b30a44d35b313a136c60a1d229f4d5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 13092,
            "upload_time": "2025-01-04T14:06:35",
            "upload_time_iso_8601": "2025-01-04T14:06:35.491517Z",
            "url": "https://files.pythonhosted.org/packages/63/67/e27039df96ee6cae02728e0591e82f424e404f4034491a2ad88600e428f0/chatlabs_support-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-04 14:06:35",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "RostHarcha",
    "github_project": "chatlabs-support",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "chatlabs-support"
}
        
Elapsed time: 0.63840s