# Закладки
- [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"
}