init
Docker Hub / build-and-push (push) Failing after 13s

This commit is contained in:
kislovdm
2026-06-12 00:42:55 +03:00
parent 64fe9c466e
commit e7c32da1f9
51 changed files with 2454 additions and 3248 deletions
View File
+36
View File
@@ -0,0 +1,36 @@
from dataclasses import dataclass
@dataclass(slots=True)
class ChatMapping:
max_chat_id: int
tg_chat_id: int
tg_thread_id: int
display_name: str
is_dm: bool
@dataclass(slots=True)
class MaxIncomingMessage:
max_chat_id: int
max_message_id: int
text: str
sender_id: int | None
sender_name: str | None
is_dm: bool
chat_title: str
reply_to_max_message_id: int | None
media: list[dict]
@dataclass(slots=True)
class TgIncomingMessage:
tg_chat_id: int
tg_message_id: int
tg_thread_id: int | None
text: str
author_name: str
author_username: str | None
is_bot: bool
reply_to_tg_message_id: int | None
media: list[dict]
+77
View File
@@ -0,0 +1,77 @@
from enum import Enum
from typing import Any
from pydantic import BaseModel, Field
class TaskKind(str, Enum):
SEND_TO_TG = "send_to_tg"
SET_REACTION = "set_reaction"
NOTIFY_FALLBACK = "notify_fallback"
SEND_TO_MAX = "send_to_max"
class MediaItem(BaseModel):
kind: str
url: str | None = None
file_id: str | None = None
file_name: str | None = None
mime_type: str | None = None
caption: str | None = None
local_path: str | None = None
max_chat_id: int | None = None
max_message_id: int | None = None
max_file_id: int | None = None
max_video_id: int | None = None
class Max2TgTask(BaseModel):
kind: TaskKind = TaskKind.SEND_TO_TG
max_chat_id: int
max_message_id: int
text: str
sender_name: str | None = None
is_dm: bool = False
chat_title: str
needs_new_topic: bool = False
reply_to_tg_message_id: int | None = None
media: list[MediaItem] = Field(default_factory=list)
class SetReactionTask(BaseModel):
kind: TaskKind = TaskKind.SET_REACTION
tg_chat_id: int
tg_message_id: int
tg_thread_id: int | None = None
emoji: str = "🦄"
class NotifyFallbackTask(BaseModel):
kind: TaskKind = TaskKind.NOTIFY_FALLBACK
title: str
details: str
class Tg2MaxTask(BaseModel):
kind: TaskKind = TaskKind.SEND_TO_MAX
max_chat_id: int
text: str
tg_chat_id: int
tg_message_id: int
tg_thread_id: int | None = None
reply_to_max_message_id: int | None = None
media: list[MediaItem] = Field(default_factory=list)
def parse_queue_payload(data: str) -> Max2TgTask | SetReactionTask | NotifyFallbackTask | Tg2MaxTask:
raw: dict[str, Any] = __import__("json").loads(data)
kind = TaskKind(raw.get("kind", TaskKind.SEND_TO_TG))
if kind == TaskKind.SEND_TO_TG:
return Max2TgTask.model_validate(raw)
if kind == TaskKind.SET_REACTION:
return SetReactionTask.model_validate(raw)
if kind == TaskKind.NOTIFY_FALLBACK:
return NotifyFallbackTask.model_validate(raw)
if kind == TaskKind.SEND_TO_MAX:
return Tg2MaxTask.model_validate(raw)
raise ValueError(f"Unknown task kind: {kind}")