mirror of
https://github.com/TheFunny/TelegramTwitterMediaBot.git
synced 2026-09-23 23:32:05 +00:00
`extract_urls` decides whether a pasted link is seen at all — a bug there is silence for the user, which is the complaint this bot's UX work keeps coming back to — and it had no test: it takes a teloxide `Message`, which is not worth building by hand. Split it into the two decisions that are ours and keep the offset work (teloxide's `parse_entities` turning entities into slices of the message text) in the thin `extract_urls` composition: - `url_of(kind, text)`: a bare `Url` entity is its own text, a `TextLink` keeps its target (not the words the user sees), everything else carries none. - `dedupe_urls`: first occurrence wins, deduped by normalized post id — so `/status/1`, `/status/1/photo/1` and a text link to the same post are one entry — and by exact text for URLs no site claims. Verified by mutation, each confirmed to fail the new tests: dropping the `TextLink` branch, and deduping by raw text (`left: [.../status/1, .../status/1/photo/1]`). `cargo fmt`, `cargo clippy --workspace --all-targets --locked -- -D warnings`, `cargo test --workspace --locked` clean.