Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,10 @@ A banned target (a 404 whose body says `"reason": "banned"`, `SUBREDDIT_IS_BANNE
the reply.
- Formats submission title (e.g. uppercase for `r/totallynotrobots`).
- Executes `submission.crosspost()` and posts an explanatory reply using localized text templates loaded by [`src/racb/i18n.py`](./src/racb/i18n.py) from the gettext catalogs in [`src/racb/locales/`](./src/racb/locales/).
The reply (`REPLY_TO_CROSSPOST`) says the target was searched for the same URL and, for image and video
posts, adds one sentence from `phase3.describe_media_scan`: how many image (or video) posts were compared
and over what period (`REPLY_TO_CROSSPOST_IMAGE_CHECK` / `..._VIDEO_CHECK`), the same for a scan cut short
The reply (`REPLY_TO_CROSSPOST`) says the whole target was searched for the same URL and for crossposts and,
for image and video posts, adds one sentence from `phase3.describe_media_scan`: how many image (or video)
posts were compared and over what period (`REPLY_TO_CROSSPOST_IMAGE_CHECK` / `..._VIDEO_CHECK`), that the
newest ones from before the comment (the Phase 1 check) and the top posts were compared too, the same for a scan cut short
by Reddit's listing limit (`..._IMAGE_CHECK_PARTIAL` / `..._VIDEO_CHECK_PARTIAL`). A scan that
found no posts to compare adds no sentence. That sentence links to
`duplicate_detector.py` on GitHub (`DUPLICATE_DETECTOR_SOURCE_URL`), so keep that file readable.
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed
- **Crosspost Reply Describes the Whole Repost Check:** the reply said only that the target was searched for the same URL and that the image (or video) posts made since the suggestion were compared, which left out most of what was checked. It now also says that the whole target was searched, crossposts of the post included ("other discussions"), and that the picture was also compared with the newest posts from before the suggestion (the check made when the comment was first seen) and with the target's top posts of the past year and of all time. Updated in every language.

## [3.0.2] - 2026-10-16

### Fixed
Expand Down
10 changes: 5 additions & 5 deletions src/racb/locales/de/LC_MESSAGES/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ msgstr ""
"\n"
"Ich habe diesen Beitrag von r/{source_subreddit} nach r/{target_subreddit} gecrosspostet, nachdem ich [diesen ordentlich hochgevoteten, **von einem Menschen geschriebenen**^1 Kommentar]({source_comment_permalink}) (Score={source_comment_score}) gesehen habe, der nahelegt, dass dieser Beitrag auch hier gut passen würde.\n"
"\n"
"Um Reposts zu vermeiden, habe ich r/{target_subreddit} nach Beiträgen mit derselben URL durchsucht.{image_check}\n"
"Um Reposts zu vermeiden, habe ich ganz r/{target_subreddit} nach Beiträgen mit derselben URL und nach Crossposts dieses Beitrags durchsucht.{image_check}\n"
"\n"
"Zudem habe ich {timedelta_string} gewartet, falls ein Mensch das lieber selbst crossposten wollte.\n"
"\n"
Expand All @@ -45,16 +45,16 @@ msgstr ""
"\n"

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK"
msgstr " Außerdem habe ich alle Bild-Beiträge der letzten {scan_period} in r/{target_subreddit} (insgesamt {post_count}) [auf Duplikate]({duplicate_detector_url}) dieses Bildes geprüft. Es wurden keine gefunden."
msgstr " Außerdem habe ich dieses Bild mit allen Bild-Beiträgen der letzten {scan_period} in r/{target_subreddit} (insgesamt {post_count}), mit den neuesten Bild-Beiträgen davor und mit den Top-Bild-Beiträgen des letzten Jahres und aller Zeiten [verglichen]({duplicate_detector_url}). Es gab keine Übereinstimmung."

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK_PARTIAL"
msgstr " Außerdem habe ich die neuesten Bild-Beiträge in r/{target_subreddit} (insgesamt {post_count}, bis zu {scan_period} zurück) [auf Duplikate]({duplicate_detector_url}) dieses Bildes geprüft. Es wurden keine gefunden."
msgstr " Außerdem habe ich dieses Bild mit den neuesten Bild-Beiträgen in r/{target_subreddit} (insgesamt {post_count}, bis zu {scan_period} zurück), mit den neuesten Bild-Beiträgen zum Zeitpunkt des Kommentars und mit den Top-Bild-Beiträgen des letzten Jahres und aller Zeiten [verglichen]({duplicate_detector_url}). Es gab keine Übereinstimmung."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK"
msgstr " Außerdem habe ich alle Video-Beiträge der letzten {scan_period} in r/{target_subreddit} (insgesamt {post_count}) [auf Duplikate]({duplicate_detector_url}) dieses Videos geprüft. Es wurden keine gefunden."
msgstr " Außerdem habe ich dieses Video mit allen Video-Beiträgen der letzten {scan_period} in r/{target_subreddit} (insgesamt {post_count}), mit den neuesten Video-Beiträgen davor und mit den Top-Video-Beiträgen des letzten Jahres und aller Zeiten [verglichen]({duplicate_detector_url}). Es gab keine Übereinstimmung."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK_PARTIAL"
msgstr " Außerdem habe ich die neuesten Video-Beiträge in r/{target_subreddit} (insgesamt {post_count}, bis zu {scan_period} zurück) [auf Duplikate]({duplicate_detector_url}) dieses Videos geprüft. Es wurden keine gefunden."
msgstr " Außerdem habe ich dieses Video mit den neuesten Video-Beiträgen in r/{target_subreddit} (insgesamt {post_count}, bis zu {scan_period} zurück), mit den neuesten Video-Beiträgen zum Zeitpunkt des Kommentars und mit den Top-Video-Beiträgen des letzten Jahres und aller Zeiten [verglichen]({duplicate_detector_url}). Es gab keine Übereinstimmung."

msgid "BAD_BOT_PHRASE"
msgstr "Schlechter Bot"
Expand Down
10 changes: 5 additions & 5 deletions src/racb/locales/en/LC_MESSAGES/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ msgstr ""
"\n"
"I crossposted this from r/{source_subreddit} to r/{target_subreddit} after seeing [this decently upvoted **human-made**^1 comment]({source_comment_permalink}) (score={source_comment_score}) written {timedelta_string} ago by {source_comment_author_name}, that seems to suggest that this post would be a good fit here too.\n"
"\n"
"To prevent reposts, I looked through r/{target_subreddit} for posts with the same URL.{image_check}\n"
"To prevent reposts, I searched all of r/{target_subreddit} for posts with the same URL and for crossposts of this post.{image_check}\n"
"\n"
"I also waited {timedelta_string} before crossposting, in case a human might've wanted to crosspost this themselves.\n"
"\n"
Expand All @@ -46,16 +46,16 @@ msgstr ""
"\n"

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK"
msgstr " I also looked through all {post_count} image posts made in r/{target_subreddit} in the last {scan_period} and [checked for duplicates]({duplicate_detector_url}) of this image. None were found."
msgstr " I also [compared this image]({duplicate_detector_url}) with all {post_count} image posts made in r/{target_subreddit} in the last {scan_period}, with the newest ones from before then, and with its top image posts of the past year and of all time. None matched."

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK_PARTIAL"
msgstr " I also looked through the {post_count} newest image posts in r/{target_subreddit}, going back {scan_period}, and [checked for duplicates]({duplicate_detector_url}) of this image. None were found."
msgstr " I also [compared this image]({duplicate_detector_url}) with the {post_count} newest image posts in r/{target_subreddit}, going back {scan_period}, with the newest ones from when the comment was written, and with its top image posts of the past year and of all time. None matched."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK"
msgstr " I also looked through all {post_count} video posts made in r/{target_subreddit} in the last {scan_period} and [checked for duplicates]({duplicate_detector_url}) of this video. None were found."
msgstr " I also [compared this video]({duplicate_detector_url}) with all {post_count} video posts made in r/{target_subreddit} in the last {scan_period}, with the newest ones from before then, and with its top video posts of the past year and of all time. None matched."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK_PARTIAL"
msgstr " I also looked through the {post_count} newest video posts in r/{target_subreddit}, going back {scan_period}, and [checked for duplicates]({duplicate_detector_url}) of this video. None were found."
msgstr " I also [compared this video]({duplicate_detector_url}) with the {post_count} newest video posts in r/{target_subreddit}, going back {scan_period}, with the newest ones from when the comment was written, and with its top video posts of the past year and of all time. None matched."

msgid "BAD_BOT_PHRASE"
msgstr "Bad bot"
Expand Down
10 changes: 5 additions & 5 deletions src/racb/locales/en@totallynotrobots/LC_MESSAGES/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ msgstr ""
"\n"
"I CROSSPOSTED THIS FROM r/{source_subreddit} TO r/{target_subreddit} AFTER SEEING [THIS DECENTLY UPVOTED **HUMAN-MADE**^1 COMMENT]({source_comment_permalink}) (SCORE={source_comment_score}), THAT SEEMS TO SUGGEST THAT THIS POST WOULD BE A GOOD FIT HERE TOO.\n"
"\n"
"TO PREVENT REPOSTS, I LOOKED THROUGH r/{target_subreddit} FOR POSTS WITH THE SAME URL.{image_check}\n"
"TO PREVENT REPOSTS, I SEARCHED ALL OF r/{target_subreddit} FOR POSTS WITH THE SAME URL AND FOR CROSSPOSTS OF THIS POST.{image_check}\n"
"\n"
"I ALSO WAITED {timedelta_string} BEFORE CROSSPOSTING, TO GIVE OTHER HUMANS A CHANCE TO CROSSPOST THIS THEMSELVES.\n"
"\n"
Expand All @@ -46,16 +46,16 @@ msgstr ""
"\n"

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK"
msgstr " I ALSO LOOKED THROUGH ALL {post_count} IMAGE POSTS MADE IN r/{target_subreddit} IN THE LAST {scan_period} AND [CHECKED FOR DUPLICATES]({duplicate_detector_url}) OF THIS IMAGE. NONE WERE FOUND."
msgstr " I ALSO [COMPARED THIS IMAGE]({duplicate_detector_url}) WITH ALL {post_count} IMAGE POSTS MADE IN r/{target_subreddit} IN THE LAST {scan_period}, WITH THE NEWEST ONES FROM BEFORE THEN, AND WITH ITS TOP IMAGE POSTS OF THE PAST YEAR AND OF ALL TIME. NONE MATCHED."

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK_PARTIAL"
msgstr " I ALSO LOOKED THROUGH THE {post_count} NEWEST IMAGE POSTS IN r/{target_subreddit}, GOING BACK {scan_period}, AND [CHECKED FOR DUPLICATES]({duplicate_detector_url}) OF THIS IMAGE. NONE WERE FOUND."
msgstr " I ALSO [COMPARED THIS IMAGE]({duplicate_detector_url}) WITH THE {post_count} NEWEST IMAGE POSTS IN r/{target_subreddit}, GOING BACK {scan_period}, WITH THE NEWEST ONES FROM WHEN THE COMMENT WAS WRITTEN, AND WITH ITS TOP IMAGE POSTS OF THE PAST YEAR AND OF ALL TIME. NONE MATCHED."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK"
msgstr " I ALSO LOOKED THROUGH ALL {post_count} VIDEO POSTS MADE IN r/{target_subreddit} IN THE LAST {scan_period} AND [CHECKED FOR DUPLICATES]({duplicate_detector_url}) OF THIS VIDEO. NONE WERE FOUND."
msgstr " I ALSO [COMPARED THIS VIDEO]({duplicate_detector_url}) WITH ALL {post_count} VIDEO POSTS MADE IN r/{target_subreddit} IN THE LAST {scan_period}, WITH THE NEWEST ONES FROM BEFORE THEN, AND WITH ITS TOP VIDEO POSTS OF THE PAST YEAR AND OF ALL TIME. NONE MATCHED."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK_PARTIAL"
msgstr " I ALSO LOOKED THROUGH THE {post_count} NEWEST VIDEO POSTS IN r/{target_subreddit}, GOING BACK {scan_period}, AND [CHECKED FOR DUPLICATES]({duplicate_detector_url}) OF THIS VIDEO. NONE WERE FOUND."
msgstr " I ALSO [COMPARED THIS VIDEO]({duplicate_detector_url}) WITH THE {post_count} NEWEST VIDEO POSTS IN r/{target_subreddit}, GOING BACK {scan_period}, WITH THE NEWEST ONES FROM WHEN THE COMMENT WAS WRITTEN, AND WITH ITS TOP VIDEO POSTS OF THE PAST YEAR AND OF ALL TIME. NONE MATCHED."

msgid "BAD_BOT_PHRASE"
msgstr "Bad human"
Expand Down
10 changes: 5 additions & 5 deletions src/racb/locales/es/LC_MESSAGES/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ msgstr ""
"\n"
"Compartí esto de r/{source_subreddit} en r/{target_subreddit} después de ver [este comentario **hecho por humanos**^1 con una votación decente]({source_comment_permalink}) (score={source_comment_score}), que parece sugerir que esta publicación también encajaría bien aquí.\n"
"\n"
"Para evitar reposts, busqué en r/{target_subreddit} publicaciones con la misma URL.{image_check}\n"
"Para evitar reposts, busqué en todo r/{target_subreddit} publicaciones con la misma URL y crossposts de esta publicación.{image_check}\n"
"\n"
"También esperé {timedelta_string} antes de compartirlo, por si una persona quería hacerlo por su cuenta.\n"
"\n"
Expand All @@ -45,16 +45,16 @@ msgstr ""
"\n"

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK"
msgstr " También revisé todas las publicaciones con imágenes de los últimos {scan_period} en r/{target_subreddit} (en total, {post_count}) y [busqué duplicados]({duplicate_detector_url}) de esta imagen. No se encontró ninguno."
msgstr " También [comparé esta imagen]({duplicate_detector_url}) con todas las publicaciones con imágenes de los últimos {scan_period} en r/{target_subreddit} (en total, {post_count}), con las más recientes de antes y con las publicaciones con imágenes más votadas del último año y de todos los tiempos. No coincidió con ninguna."

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK_PARTIAL"
msgstr " También revisé las publicaciones con imágenes más recientes de r/{target_subreddit} (en total, {post_count}, de hasta hace {scan_period}) y [busqué duplicados]({duplicate_detector_url}) de esta imagen. No se encontró ninguno."
msgstr " También [comparé esta imagen]({duplicate_detector_url}) con las publicaciones con imágenes más recientes de r/{target_subreddit} (en total, {post_count}, de hasta hace {scan_period}), con las más recientes de cuando se escribió el comentario y con las publicaciones con imágenes más votadas del último año y de todos los tiempos. No coincidió con ninguna."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK"
msgstr " También revisé todas las publicaciones con vídeos de los últimos {scan_period} en r/{target_subreddit} (en total, {post_count}) y [busqué duplicados]({duplicate_detector_url}) de este vídeo. No se encontró ninguno."
msgstr " También [comparé este vídeo]({duplicate_detector_url}) con todas las publicaciones con vídeos de los últimos {scan_period} en r/{target_subreddit} (en total, {post_count}), con las más recientes de antes y con las publicaciones con vídeos más votadas del último año y de todos los tiempos. No coincidió con ninguna."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK_PARTIAL"
msgstr " También revisé las publicaciones con vídeos más recientes de r/{target_subreddit} (en total, {post_count}, de hasta hace {scan_period}) y [busqué duplicados]({duplicate_detector_url}) de este vídeo. No se encontró ninguno."
msgstr " También [comparé este vídeo]({duplicate_detector_url}) con las publicaciones con vídeos más recientes de r/{target_subreddit} (en total, {post_count}, de hasta hace {scan_period}), con las más recientes de cuando se escribió el comentario y con las publicaciones con vídeos más votadas del último año y de todos los tiempos. No coincidió con ninguna."

msgid "BAD_BOT_PHRASE"
msgstr "Mal bot"
Expand Down
10 changes: 5 additions & 5 deletions src/racb/locales/fr/LC_MESSAGES/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ msgstr ""
"\n"
"J'ai crossposté ceci de r/{source_subreddit} vers r/{target_subreddit} après avoir vu [ce commentaire **écrit par un humain**^1 et plutôt bien noté]({source_comment_permalink}) (score={source_comment_score}), qui semble suggérer que cette publication aurait aussi sa place ici.\n"
"\n"
"Pour éviter les reposts, j'ai cherché dans r/{target_subreddit} des publications avec la même URL.{image_check}\n"
"Pour éviter les reposts, j'ai cherché dans tout r/{target_subreddit} des publications avec la même URL et des crossposts de cette publication.{image_check}\n"
"\n"
"J'ai aussi attendu {timedelta_string} avant de crossposter, au cas où un humain aurait voulu le faire lui-même.\n"
"\n"
Expand All @@ -45,16 +45,16 @@ msgstr ""
"\n"

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK"
msgstr " J'ai aussi parcouru toutes les publications d'images faites dans r/{target_subreddit} au cours des {scan_period} précédents (au total : {post_count}) et [cherché des doublons]({duplicate_detector_url}) de cette image. Aucun n'a été trouvé."
msgstr " J'ai aussi [comparé cette image]({duplicate_detector_url}) à toutes les publications d'images faites dans r/{target_subreddit} au cours des {scan_period} précédents (au total : {post_count}), aux plus récentes d'avant cette période et aux publications d'images les mieux notées de l'année écoulée et de tous les temps. Aucune ne correspondait."

msgid "REPLY_TO_CROSSPOST_IMAGE_CHECK_PARTIAL"
msgstr " J'ai aussi parcouru les publications d'images les plus récentes de r/{target_subreddit} (au total : {post_count}, jusqu'à il y a {scan_period}) et [cherché des doublons]({duplicate_detector_url}) de cette image. Aucun n'a été trouvé."
msgstr " J'ai aussi [comparé cette image]({duplicate_detector_url}) aux publications d'images les plus récentes de r/{target_subreddit} (au total : {post_count}, jusqu'à il y a {scan_period}), aux plus récentes au moment du commentaire et aux publications d'images les mieux notées de l'année écoulée et de tous les temps. Aucune ne correspondait."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK"
msgstr " J'ai aussi parcouru toutes les publications de vidéos faites dans r/{target_subreddit} au cours des {scan_period} précédents (au total : {post_count}) et [cherché des doublons]({duplicate_detector_url}) de cette vidéo. Aucun n'a été trouvé."
msgstr " J'ai aussi [comparé cette vidéo]({duplicate_detector_url}) à toutes les publications de vidéos faites dans r/{target_subreddit} au cours des {scan_period} précédents (au total : {post_count}), aux plus récentes d'avant cette période et aux publications de vidéos les mieux notées de l'année écoulée et de tous les temps. Aucune ne correspondait."

msgid "REPLY_TO_CROSSPOST_VIDEO_CHECK_PARTIAL"
msgstr " J'ai aussi parcouru les publications de vidéos les plus récentes de r/{target_subreddit} (au total : {post_count}, jusqu'à il y a {scan_period}) et [cherché des doublons]({duplicate_detector_url}) de cette vidéo. Aucun n'a été trouvé."
msgstr " J'ai aussi [comparé cette vidéo]({duplicate_detector_url}) aux publications de vidéos les plus récentes de r/{target_subreddit} (au total : {post_count}, jusqu'à il y a {scan_period}), aux plus récentes au moment du commentaire et aux publications de vidéos les mieux notées de l'année écoulée et de tous les temps. Aucune ne correspondait."

msgid "BAD_BOT_PHRASE"
msgstr "Mauvais bot"
Expand Down
Loading
Loading