Виявив баг в логіці обробки дописів в Twitter, коли в Telegram написав повідомлення з посиланням на цю статтю. Посилання дуже довге за рахунок екранування кирилиці кодами символів. І повідомлення з посиланням вийшло довшим за 280 символів, хоча Twitter всі посилання приводить до довжини 23 символи.
Зараз виправив цю логіку. Тепер в тексті посилання замінюю на рядок-плейсхолдер з 24-х символів "X". Посиланнями вважаю той текст, що починається на "http" і завершується пробілом. Знаю, що це не дуже вірно, бо після послання можуть бути знаки пунктуації, котрі не є частиною посилання, але пишу код для себе і не хочу його дуже ускладнювати, тому просто плейсхолдер має 24 символи, а не 23. В торії баги можуть бути, але для мене цього достатньо.
Оригінальне повідомлення без замінених посилань зберігаю окремо і його відправляю в інші мережі та в сам Twitter, якщо текст з заміненими посиланнями не перевищує ліміт. А перед відправкою скороченого повідомлення в Twitter вже замінюю плейсхолдери на оригінальні посилання.
Не дуже гарний код, але доволі простий. Можна було все коротше і гарніше реалізувати за допомогою регулярних виразів. Але це ускладнило би код і не факт, що там також всі випадки передбачалися. Як кажуть, якщо для рішення однієї проблеми використовуєш регулярний вираз, то в тебе вже дві проблеми :)
Виправив цю логіку для випадків відправки повідомлені в Twitter з Instagram і Telegram. Для відправки з RSS нічого не змінилося, бо там й так з тексти прибираю всі посилання перед відправкою. Код відповідних трьох фільтрів дій IFTTT на GitHub Gist оновив і зараз в тексті основної статті вже фрагменти коду з цією виправленою логікою.