这是一个批量整理提交,包含以下主要改动: 1. 删除多处冗余的空行和未使用的导入 2. 修复文件末尾缺少换行符的问题 3. 调整部分模块的导入顺序与代码排版 4. 修复部分配置默认值与策略逻辑 5. 新增多个功能模块与辅助工具 6. 完善异常处理与日志记录 7. 修复速率限制、消息缓存、权限校验等逻辑bug 8. 废弃部分旧有API与配置项并添加警告提示
71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
from __future__ import annotations
|
||
|
||
from dataclasses import dataclass, field
|
||
from enum import StrEnum
|
||
|
||
|
||
class ChannelMode(StrEnum):
|
||
BRIDGE = "bridge"
|
||
CLOUD_API = "cloud_api"
|
||
|
||
|
||
class ChannelCapability(StrEnum):
|
||
TEXT = "text"
|
||
IMAGE = "image"
|
||
VIDEO = "video"
|
||
AUDIO = "audio"
|
||
DOCUMENT = "document"
|
||
STICKER = "sticker"
|
||
LOCATION = "location"
|
||
CONTACT = "contact"
|
||
REACTION = "reaction"
|
||
BUTTONS = "buttons"
|
||
LIST_MESSAGE = "list_message"
|
||
TEMPLATE = "template"
|
||
POLL = "poll"
|
||
GROUP = "group"
|
||
BROADCAST = "broadcast"
|
||
QR_LOGIN = "qr_login"
|
||
PAIRING = "pairing"
|
||
SSE_POLLING = "sse_polling"
|
||
|
||
|
||
@dataclass
|
||
class WhatsAppChannelMeta:
|
||
channel_type: str = "whatsapp"
|
||
display_name: str = "WhatsApp"
|
||
protocol: str = "whatsapp"
|
||
supported_modes: list[ChannelMode] = field(default_factory=lambda: [ChannelMode.BRIDGE, ChannelMode.CLOUD_API])
|
||
capabilities: list[ChannelCapability] = field(
|
||
default_factory=lambda: [
|
||
ChannelCapability.TEXT,
|
||
ChannelCapability.IMAGE,
|
||
ChannelCapability.VIDEO,
|
||
ChannelCapability.AUDIO,
|
||
ChannelCapability.DOCUMENT,
|
||
ChannelCapability.STICKER,
|
||
ChannelCapability.LOCATION,
|
||
ChannelCapability.CONTACT,
|
||
ChannelCapability.REACTION,
|
||
ChannelCapability.BUTTONS,
|
||
ChannelCapability.LIST_MESSAGE,
|
||
ChannelCapability.POLL,
|
||
ChannelCapability.GROUP,
|
||
ChannelCapability.QR_LOGIN,
|
||
ChannelCapability.PAIRING,
|
||
ChannelCapability.SSE_POLLING,
|
||
]
|
||
)
|
||
inbound_rate_limit: int = 60
|
||
outbound_rate_limit: int = 30
|
||
description: str = "WhatsApp Bridge适配器,通过Baileys协议连接WhatsApp"
|
||
|
||
def has_capability(self, capability: ChannelCapability) -> bool:
|
||
return capability in self.capabilities
|
||
|
||
def supports_mode(self, mode: ChannelMode) -> bool:
|
||
return mode in self.supported_modes
|
||
|
||
|
||
ChannelMeta = WhatsAppChannelMeta
|