test: speed up telegram tests (#148)
This commit is contained in:
@@ -101,6 +101,7 @@ class TelegramTransportSettings(BaseModel):
|
|||||||
session_mode: Literal["stateless", "chat"] = "stateless"
|
session_mode: Literal["stateless", "chat"] = "stateless"
|
||||||
show_resume_line: bool = True
|
show_resume_line: bool = True
|
||||||
forward_coalesce_s: float = Field(default=1.0, ge=0)
|
forward_coalesce_s: float = Field(default=1.0, ge=0)
|
||||||
|
media_group_debounce_s: float = Field(default=1.0, ge=0)
|
||||||
topics: TelegramTopicsSettings = Field(default_factory=TelegramTopicsSettings)
|
topics: TelegramTopicsSettings = Field(default_factory=TelegramTopicsSettings)
|
||||||
files: TelegramFilesSettings = Field(default_factory=TelegramFilesSettings)
|
files: TelegramFilesSettings = Field(default_factory=TelegramFilesSettings)
|
||||||
|
|
||||||
|
|||||||
@@ -139,6 +139,7 @@ class TelegramBackend(TransportBackend):
|
|||||||
voice_max_bytes=int(settings.voice_max_bytes),
|
voice_max_bytes=int(settings.voice_max_bytes),
|
||||||
voice_transcription_model=settings.voice_transcription_model,
|
voice_transcription_model=settings.voice_transcription_model,
|
||||||
forward_coalesce_s=settings.forward_coalesce_s,
|
forward_coalesce_s=settings.forward_coalesce_s,
|
||||||
|
media_group_debounce_s=settings.media_group_debounce_s,
|
||||||
topics=settings.topics,
|
topics=settings.topics,
|
||||||
files=settings.files,
|
files=settings.files,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ class TelegramBridgeConfig:
|
|||||||
voice_max_bytes: int = 10 * 1024 * 1024
|
voice_max_bytes: int = 10 * 1024 * 1024
|
||||||
voice_transcription_model: str = "gpt-4o-mini-transcribe"
|
voice_transcription_model: str = "gpt-4o-mini-transcribe"
|
||||||
forward_coalesce_s: float = 1.0
|
forward_coalesce_s: float = 1.0
|
||||||
|
media_group_debounce_s: float = 1.0
|
||||||
files: TelegramFilesSettings = field(default_factory=TelegramFilesSettings)
|
files: TelegramFilesSettings = field(default_factory=TelegramFilesSettings)
|
||||||
chat_ids: tuple[int, ...] | None = None
|
chat_ids: tuple[int, ...] | None = None
|
||||||
topics: TelegramTopicsSettings = field(default_factory=TelegramTopicsSettings)
|
topics: TelegramTopicsSettings = field(default_factory=TelegramTopicsSettings)
|
||||||
|
|||||||
@@ -73,8 +73,6 @@ logger = get_logger(__name__)
|
|||||||
|
|
||||||
__all__ = ["poll_updates", "run_main_loop", "send_with_resume"]
|
__all__ = ["poll_updates", "run_main_loop", "send_with_resume"]
|
||||||
|
|
||||||
_MEDIA_GROUP_DEBOUNCE_S = 1.0
|
|
||||||
|
|
||||||
ForwardKey = tuple[int, int, int]
|
ForwardKey = tuple[int, int, int]
|
||||||
|
|
||||||
|
|
||||||
@@ -498,6 +496,7 @@ async def run_main_loop(
|
|||||||
topics_chat_ids: frozenset[int] = frozenset()
|
topics_chat_ids: frozenset[int] = frozenset()
|
||||||
bot_username: str | None = None
|
bot_username: str | None = None
|
||||||
forward_coalesce_s = max(0.0, float(cfg.forward_coalesce_s))
|
forward_coalesce_s = max(0.0, float(cfg.forward_coalesce_s))
|
||||||
|
media_group_debounce_s = max(0.0, float(cfg.media_group_debounce_s))
|
||||||
|
|
||||||
def refresh_topics_scope() -> None:
|
def refresh_topics_scope() -> None:
|
||||||
nonlocal resolved_topics_scope, topics_chat_ids
|
nonlocal resolved_topics_scope, topics_chat_ids
|
||||||
@@ -1226,7 +1225,7 @@ async def run_main_loop(
|
|||||||
if state is None:
|
if state is None:
|
||||||
return
|
return
|
||||||
token = state.token
|
token = state.token
|
||||||
await anyio.sleep(_MEDIA_GROUP_DEBOUNCE_S)
|
await anyio.sleep(media_group_debounce_s)
|
||||||
state = media_groups.get(key)
|
state = media_groups.get(key)
|
||||||
if state is None:
|
if state is None:
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -61,6 +61,10 @@ from takopi.transport import MessageRef, RenderedMessage, SendOptions
|
|||||||
from tests.plugin_fixtures import FakeEntryPoint, install_entrypoints
|
from tests.plugin_fixtures import FakeEntryPoint, install_entrypoints
|
||||||
|
|
||||||
CODEX_ENGINE = "codex"
|
CODEX_ENGINE = "codex"
|
||||||
|
FAST_FORWARD_COALESCE_S = 0.0
|
||||||
|
FAST_MEDIA_GROUP_DEBOUNCE_S = 0.0
|
||||||
|
BATCH_MEDIA_GROUP_DEBOUNCE_S = 0.05
|
||||||
|
DEBOUNCE_FORWARD_COALESCE_S = 0.05
|
||||||
|
|
||||||
|
|
||||||
def _empty_projects() -> ProjectsConfig:
|
def _empty_projects() -> ProjectsConfig:
|
||||||
@@ -323,6 +327,8 @@ def _make_cfg(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -952,6 +958,8 @@ async def test_handle_file_put_writes_file(tmp_path: Path) -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
files=TelegramFilesSettings(enabled=True),
|
files=TelegramFilesSettings(enabled=True),
|
||||||
)
|
)
|
||||||
msg = TelegramIncomingMessage(
|
msg = TelegramIncomingMessage(
|
||||||
@@ -1015,6 +1023,8 @@ async def test_handle_file_get_sends_document_for_allowed_user(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
files=TelegramFilesSettings(
|
files=TelegramFilesSettings(
|
||||||
enabled=True,
|
enabled=True,
|
||||||
allowed_user_ids=[42],
|
allowed_user_ids=[42],
|
||||||
@@ -1315,6 +1325,8 @@ async def test_topic_command_recreates_stale_topic(tmp_path: Path) -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
topics=TelegramTopicsSettings(enabled=True, scope="main"),
|
topics=TelegramTopicsSettings(enabled=True, scope="main"),
|
||||||
)
|
)
|
||||||
store = TopicStateStore(tmp_path / "telegram_topics_state.json")
|
store = TopicStateStore(tmp_path / "telegram_topics_state.json")
|
||||||
@@ -1777,6 +1789,8 @@ async def test_run_main_loop_routes_reply_to_running_resume() -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def poller(_cfg: TelegramBridgeConfig):
|
async def poller(_cfg: TelegramBridgeConfig):
|
||||||
@@ -1866,6 +1880,8 @@ async def test_run_main_loop_persists_topic_sessions_in_project_scope(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
topics=TelegramTopicsSettings(
|
topics=TelegramTopicsSettings(
|
||||||
enabled=True,
|
enabled=True,
|
||||||
scope="projects",
|
scope="projects",
|
||||||
@@ -1946,6 +1962,8 @@ async def test_run_main_loop_auto_resumes_topic_default_engine(
|
|||||||
presenter=MarkdownPresenter(),
|
presenter=MarkdownPresenter(),
|
||||||
final_notify=True,
|
final_notify=True,
|
||||||
),
|
),
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
topics=TelegramTopicsSettings(
|
topics=TelegramTopicsSettings(
|
||||||
enabled=True,
|
enabled=True,
|
||||||
scope="main",
|
scope="main",
|
||||||
@@ -2011,6 +2029,8 @@ async def test_run_main_loop_auto_resumes_chat_sessions(tmp_path: Path) -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2044,6 +2064,8 @@ async def test_run_main_loop_auto_resumes_chat_sessions(tmp_path: Path) -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2113,6 +2135,8 @@ async def test_run_main_loop_prompt_upload_uses_caption_directives(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
files=TelegramFilesSettings(
|
files=TelegramFilesSettings(
|
||||||
enabled=True,
|
enabled=True,
|
||||||
auto_put=True,
|
auto_put=True,
|
||||||
@@ -2176,6 +2200,8 @@ async def test_run_main_loop_voice_transcript_preserves_directive(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
voice_transcription=True,
|
voice_transcription=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2245,6 +2271,8 @@ async def test_run_main_loop_debounces_forwarded_messages_preserves_directives()
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=DEBOUNCE_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def poller(_cfg: TelegramBridgeConfig):
|
async def poller(_cfg: TelegramBridgeConfig):
|
||||||
@@ -2313,6 +2341,8 @@ async def test_run_main_loop_ignores_forwarded_without_prompt() -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def poller(_cfg: TelegramBridgeConfig):
|
async def poller(_cfg: TelegramBridgeConfig):
|
||||||
@@ -2395,6 +2425,8 @@ async def test_run_main_loop_prompt_upload_auto_resumes_chat_sessions(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
files=TelegramFilesSettings(
|
files=TelegramFilesSettings(
|
||||||
enabled=True,
|
enabled=True,
|
||||||
@@ -2446,6 +2478,8 @@ async def test_run_main_loop_prompt_upload_auto_resumes_chat_sessions(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg2,
|
exec_cfg=exec_cfg2,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
files=TelegramFilesSettings(
|
files=TelegramFilesSettings(
|
||||||
enabled=True,
|
enabled=True,
|
||||||
@@ -2530,6 +2564,8 @@ async def test_run_main_loop_command_updates_chat_session_resume(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
show_resume_line=False,
|
show_resume_line=False,
|
||||||
)
|
)
|
||||||
@@ -2570,6 +2606,8 @@ async def test_run_main_loop_command_updates_chat_session_resume(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg2,
|
exec_cfg=exec_cfg2,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
show_resume_line=False,
|
show_resume_line=False,
|
||||||
)
|
)
|
||||||
@@ -2634,6 +2672,8 @@ async def test_run_main_loop_hides_resume_line_when_disabled(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
show_resume_line=False,
|
show_resume_line=False,
|
||||||
)
|
)
|
||||||
@@ -2687,6 +2727,8 @@ async def test_run_main_loop_chat_sessions_isolate_group_senders(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2716,6 +2758,8 @@ async def test_run_main_loop_chat_sessions_isolate_group_senders(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2763,6 +2807,8 @@ async def test_run_main_loop_new_clears_chat_sessions(tmp_path: Path) -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
session_mode="chat",
|
session_mode="chat",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2811,6 +2857,8 @@ async def test_run_main_loop_new_clears_topic_sessions(tmp_path: Path) -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
topics=TelegramTopicsSettings(enabled=True, scope="main"),
|
topics=TelegramTopicsSettings(enabled=True, scope="main"),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2854,6 +2902,8 @@ async def test_run_main_loop_replies_in_same_thread() -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def poller(_cfg: TelegramBridgeConfig):
|
async def poller(_cfg: TelegramBridgeConfig):
|
||||||
@@ -2927,6 +2977,8 @@ async def test_run_main_loop_batches_media_group_upload(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=BATCH_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
files=TelegramFilesSettings(enabled=True, auto_put=True),
|
files=TelegramFilesSettings(enabled=True, auto_put=True),
|
||||||
)
|
)
|
||||||
msg1 = TelegramIncomingMessage(
|
msg1 = TelegramIncomingMessage(
|
||||||
@@ -3032,6 +3084,8 @@ async def test_run_main_loop_handles_command_plugins(monkeypatch) -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def poller(_cfg: TelegramBridgeConfig):
|
async def poller(_cfg: TelegramBridgeConfig):
|
||||||
@@ -3117,6 +3171,8 @@ async def test_run_main_loop_command_uses_project_default_engine(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def poller(_cfg: TelegramBridgeConfig):
|
async def poller(_cfg: TelegramBridgeConfig):
|
||||||
@@ -3201,6 +3257,8 @@ async def test_run_main_loop_command_defaults_to_chat_project(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def poller(_cfg: TelegramBridgeConfig):
|
async def poller(_cfg: TelegramBridgeConfig):
|
||||||
@@ -3269,6 +3327,8 @@ async def test_run_main_loop_refreshes_command_ids(monkeypatch) -> None:
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def poller(_cfg: TelegramBridgeConfig):
|
async def poller(_cfg: TelegramBridgeConfig):
|
||||||
@@ -3329,6 +3389,8 @@ async def test_run_main_loop_mentions_only_skips_voice_and_files(
|
|||||||
chat_id=123,
|
chat_id=123,
|
||||||
startup_msg="",
|
startup_msg="",
|
||||||
exec_cfg=exec_cfg,
|
exec_cfg=exec_cfg,
|
||||||
|
forward_coalesce_s=FAST_FORWARD_COALESCE_S,
|
||||||
|
media_group_debounce_s=FAST_MEDIA_GROUP_DEBOUNCE_S,
|
||||||
voice_transcription=True,
|
voice_transcription=True,
|
||||||
files=TelegramFilesSettings(enabled=True, auto_put=True),
|
files=TelegramFilesSettings(enabled=True, auto_put=True),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ async def test_edits_coalesce_latest() -> None:
|
|||||||
@pytest.mark.anyio
|
@pytest.mark.anyio
|
||||||
async def test_send_preempts_pending_edit() -> None:
|
async def test_send_preempts_pending_edit() -> None:
|
||||||
bot = _FakeBot()
|
bot = _FakeBot()
|
||||||
client = TelegramClient(client=bot, private_chat_rps=10.0, group_chat_rps=10.0)
|
client = TelegramClient(client=bot, private_chat_rps=0.0, group_chat_rps=0.0)
|
||||||
|
|
||||||
await client.edit_message_text(
|
await client.edit_message_text(
|
||||||
chat_id=1,
|
chat_id=1,
|
||||||
@@ -259,7 +259,9 @@ async def test_send_preempts_pending_edit() -> None:
|
|||||||
with anyio.fail_after(1):
|
with anyio.fail_after(1):
|
||||||
await client.send_message(chat_id=1, text="final")
|
await client.send_message(chat_id=1, text="final")
|
||||||
|
|
||||||
await anyio.sleep(0.2)
|
with anyio.fail_after(1):
|
||||||
|
while len(bot.calls) < 3:
|
||||||
|
await anyio.sleep(0)
|
||||||
assert bot.calls[0] == "edit_message_text"
|
assert bot.calls[0] == "edit_message_text"
|
||||||
assert bot.calls[1] == "send_message"
|
assert bot.calls[1] == "send_message"
|
||||||
assert bot.calls[-1] == "edit_message_text"
|
assert bot.calls[-1] == "edit_message_text"
|
||||||
@@ -268,7 +270,7 @@ async def test_send_preempts_pending_edit() -> None:
|
|||||||
@pytest.mark.anyio
|
@pytest.mark.anyio
|
||||||
async def test_delete_drops_pending_edits() -> None:
|
async def test_delete_drops_pending_edits() -> None:
|
||||||
bot = _FakeBot()
|
bot = _FakeBot()
|
||||||
client = TelegramClient(client=bot, private_chat_rps=10.0, group_chat_rps=10.0)
|
client = TelegramClient(client=bot, private_chat_rps=0.0, group_chat_rps=0.0)
|
||||||
|
|
||||||
await client.edit_message_text(
|
await client.edit_message_text(
|
||||||
chat_id=1,
|
chat_id=1,
|
||||||
@@ -289,7 +291,9 @@ async def test_delete_drops_pending_edits() -> None:
|
|||||||
message_id=1,
|
message_id=1,
|
||||||
)
|
)
|
||||||
|
|
||||||
await anyio.sleep(0.2)
|
with anyio.fail_after(1):
|
||||||
|
while not bot.delete_calls:
|
||||||
|
await anyio.sleep(0)
|
||||||
assert bot.delete_calls == [(1, 1)]
|
assert bot.delete_calls == [(1, 1)]
|
||||||
assert bot.edit_calls == ["first"]
|
assert bot.edit_calls == ["first"]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user