Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ссылка на комментарий в сообщении #9

Closed
audetv opened this issue Aug 27, 2023 · 38 comments · Fixed by #10
Closed

Ссылка на комментарий в сообщении #9

audetv opened this issue Aug 27, 2023 · 38 comments · Fixed by #10

Comments

@audetv
Copy link
Contributor

audetv commented Aug 27, 2023

#448782 Подскажите, а есть техническая возможность добавить в трансляцию в телеграме под посты ссылку на комментарий, по типу как это сделано на сайте svodd.ru?

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Ссылка на спецификацию url fragment:
URL Fragment Text Directives
https://wicg.github.io/scroll-to-text-fragment/

Пока не знаю, техническая возможность есть, в параллельной ветке keyboard заготовлено решение, на прошлой неделе сделал, но не вводил в строй.

Может выглядеть как-то так:

2023-08-27_12-04-29

@iprst
Copy link

iprst commented Aug 27, 2023

Какие ещё варианты оформления такой ссылки существуют?

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Хороший вопрос, проверю есть ли оформление в виде обычной ссылки, типа [слово ссылка](url)
и надо чтобы контент по ссылке не подгружался(не парсился) в сообщение

@iprst
Copy link

iprst commented Aug 27, 2023

Я полистал ссылку наверху, сразу не сумел ответить, что там с оформлением. Технические элементы в основном описываются. Возможно не дочитал. Возможно это вообще относится к телеграму и его функциям, к которым открыт доступ.

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Я полистал ссылку наверху, сразу не сумел ответить, что там с оформлением. Технические элементы в основном описываются. Возможно не дочитал. Возможно это вообще относится к телеграму и его функциям, к которым открыт доступ.

Ссылка на URL Fragment Text Directives не относится к телеграму, это про саму ссылку, фрагменты #:~:text=20:09%2026.08.2023

В телеграме спецификация api очень сложно читается, мне было не понятно, причем сразу. Ощущение, что написано так, чтобы никто ничего не понял, но при этом все описано. Очень непривычный стиль подачи информации и оформления. Как отправить сообщение, не какой либо готовой программой из гитхаба, а чисто самому, я разбирался пару дней… )

Поищу в спецификации можно ли делать ссылки. Кнопки как делать я разобрался, кнопки, конечно, для бота более полезны.

@iprst
Copy link

iprst commented Aug 27, 2023

Ссылка на URL Fragment Text Directives не относится к телеграму, это про саму ссылку

Это понятно. Я и имею в виду, что в описании там не нашёл дизайнов и вариантов, и предположил, что такие описания скорее всего относятся к самому телеграму и его API.

В телеграме спецификация api очень сложно читается, мне было не понятно, причем сразу. Ощущение, что написано так, чтобы никто ничего не понял, но при этом все описано. Очень непривычный стиль подачи информации и оформления. Как отправить сообщение, не какой либо готовой программой из гитхаба, а чисто самому, я разбирался пару дней… )

Скорее всего это полная случайность и мы уже знаем, что даже бабушка моего кота… (с)

Поищу в спецификации можно ли делать ссылки. Кнопки как делать я разобрался, кнопки, конечно, для бота более полезны.

Может и кнопки есть, просто другие, или какие-то ещё варианты оформления функционала внутри блоков сообщений.

@iprst
Copy link

iprst commented Aug 27, 2023

В целом наверное такая кнопка во всю ширину сильно мешать не будет.

Почитал кратко телеграм API. Я так понял используется Inline Keyboard, то есть функционал легко будет расширить, если потребуется ввести какие-то ещё функции.

Например, можно ли выделить слово в телеге и с помощью подстрочной кнопки отправить это слово в один из поисковиков?

«поискать в толстых книгах», «поискать в военно-исторической библиотеке» и тд.

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Я не нашел в api у телеграм других вариантов оформления кроме inline keyboard — это ReplyMarkup объект.
А также обычная ссылка в тексте сообщения. Например можно оформить ссылку так в конце каждого сообщения:

Details

2023-08-27_20-54-14

Первый вариант с решёткой перед ссылкой, как бы хэштег, второй просто ссылка в конце сообщения.

В целом наверное такая кнопка во всю ширину сильно мешать не будет.

Почитал кратко телеграм API. Я так понял используется Inline Keyboard, то есть функционал легко будет расширить, если потребуется ввести какие-то ещё функции.

Да там могут быть несколько кнопок в один ряд и т.д. кнопки с иконками и т.д. тип так:

Details

2023-08-27_20-57-32

Например, можно ли выделить слово в телеге и с помощью подстрочной кнопки отправить это слово в один из поисковиков?

Вот этого я ещё не знаю, да, это может быть хорошая функция. Изучу вопрос.

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Подумал, что оформление с кнопкой логично оставить для сценариев бота, как раз для таких случаев, как выделить слово в телеге и с помощью подстрочной кнопки отправить это слово в один из поисковиков.

Мне с самого начала вариант задействовать целую кнопку, чтобы посмотреть комментарий не нравился, еще когда я изучал и писал первые версии бота. Но создание кнопок мной было отработано, и я оставил это в разработке до лучших времен. Для других сценариев. Сейчас удалось сделал вариант с просто ссылкой «Посмотреть комментарий на ФКТ», на мой взгляд этот вариант выглядит более подходящим. Мысли?

@iprst
Copy link

iprst commented Aug 27, 2023

Мне с самого начала вариант задействовать целую кнопку, чтобы посмотреть комментарий не нравился, еще когда я изучал и писал первые версии бота. Но создание кнопок мной было отработано, и я оставил это в разработке до лучших времен. Для других сценариев. Сейчас удалось сделал вариант с просто ссылкой «Посмотреть комментарий на ФКТ», на мой взгляд этот вариант выглядит более подходящим. Мысли?

Думаю пока, поскольку отрабатывается пользовательский запрос, а время на раздумия у нас не было, надо делать самый простой вариант с текстовом ссылкой внутри блока сообщения, как у вас на скриншоте. Только нужно придумать текст ссылки, который не будет мозолить глаза в каждом сообщении. Лучше всего если это будет односложный текст.

★ Источник
★ Комментарий
★ Оригинал
★ Форум
★ ФКТ
★ Посмотреть

Что-то такое. Ничто не подходит идеально, но варианты рабочие.

UPD. Шрифтовое оформление применяется? Можно текст курсивом, тогда это будет рифма с оформлением цитаты, намёк на переход. Со звёздочкой будет отлично работать, я бы взял прямо Источник или Посмотреть но можно любое другое слово, мы быстро ко всему привыкнем.

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

UPD. Шрифтовое оформление применяется? Можно текст курсивом, тогда это будет рифма с оформлением цитаты, намёк на переход. Со звёздочкой будет отлично работать, я бы взял прямо Источник или Посмотреть но можно любое другое слово, мы быстро ко всему привыкнем.

Да, хороший вариант Источник Проверю шрифтовое оформление.

@iprst
Copy link

iprst commented Aug 27, 2023

Подумал, что оформление с кнопкой логично оставить для сценариев бота, как раз для таких случаев, как выделить слово в телеге и с помощью подстрочной кнопки отправить это слово в один из поисковиков.

Так точно. Тратить «богатый» и к тому же по-видимому единственный функционал на простую ссылку не особо разумно.

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Два варианта: Источник и Посмотреть

Details

2023-08-27_22-25-19

@iprst
Copy link

iprst commented Aug 27, 2023

Два варианта: Источник и Посмотреть

Наверное источник более ясно указывает суть ссылки. Можно выкатить обнову и сразу прилетит ОС если что-то не так. Если нажатия на ссылку как-то фиксируются в статистике, всё будет понятно по ней.

@audetv audetv linked a pull request Aug 27, 2023 that will close this issue
@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Сделал обновление, посмотрим.

@iprst
Copy link

iprst commented Aug 27, 2023

Я уже добавил комментарий, жду посмотреть когда приклеится ссылка.
Где-то минуту не был доступен сервис телеги в момент проверки гитхаба.

@BlackPatrick
Copy link

BlackPatrick commented Aug 27, 2023

Здравствуйте! Спасибо за оперативность. Проверил ссылки под постом. Не работает, к сожалению. По ссылке ведет на не существующую страницу на сайте ФКТ

@BlackPatrick
Copy link

Еще есть предложение

Два варианта: Источник и Посмотреть

Наверное источник более ясно указывает суть ссылки. Можно выкатить обнову и сразу прилетит ОС если что-то не так. Если нажатия на ссылку как-то фиксируются в статистике, всё будет понятно по ней.

Есть предложение написать не Источник, а также, как это на svodd.ru, а именно Перейти к комментарию на ФКТ

@iprst
Copy link

iprst commented Aug 27, 2023

Не работает к сожалению. Выводит на не существующую страницу на сайте ФКТ

Какое сообщение отдаёт ошибку? Какой браузер открывает ссылку? Сейчас в ссылке используется хак — прикручен highlight ко времени-дате комментария, чтобы страница прокручивалась прямо к нему, эти ссылки могут в теории обрабатываться браузерами по-разному.

Я попробовал, у меня в хроме открываются все тестированные ссылки.

UPD. Я попробовал все ссылки, которые на данный момент есть, в хроме все открываются верно. Правильное поведение как при переходе из предпросмотра телеграма в браузере хром, так и при переходе по ссылке из дектопного приложения. Со смартфона не проверял, но по всей видимости проблема не в какой-то конкретной ссылке, а в системе телеграм-браузер.

@BlackPatrick
Copy link

Пишет not found (#404) Вот например ссылка которую открывает под моим же последним постом
https://xn----8sba0bbi0cdm.xn--p1ai/qa/question/view-5290%23:~:text=20:33%252027.08.2023
Пробую на iPadOS 16.6 (20G75), по умолчанию браузер Яндекс

@iprst
Copy link

iprst commented Aug 27, 2023

Пишет not found (#404) Вот например ссылка которую открывает под моим же последним постом
https://xn----8sba0bbi0cdm.xn--p1ai/qa/question/view-5290%23:~:text=20:33%252027.08.2023
Пробую на iPadOS 16.6 (20G75), по умолчанию браузер Яндекс

Ага. Видно, что ссылка отдаётся с %23 вместо решётки #
https://xn----8sba0bbi0cdm.xn--p1ai/qa/question/view-5290#:~:text=20:33%2027.08.2023

@BlackPatrick
Copy link

Завтра попробую на ноуте тоже с Яндексом протестить

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Проверил ссылки под постом. Не работает к сожалению. Выводит на не существующую страницу на сайте ФКТ

Интересно, у меня ссылки открываются, просьба прислать скриншот из браузера, можно сюда приложить.
Что показывает при наведении на ссылку Источник ?
Хром и edge открывают ссылки, ещё пробовал в brave браузере, в нем только страницу открывает без перехода к комментарию.

Есть ещё предположение, можно доработать код, что ссылку надо перевести из кириллицы, возможно не все браузере умеют открывать кирилические ссылки.

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Пишет not found (#404) Вот например ссылка которую открывает под моим же последним постом https://xn----8sba0bbi0cdm.xn--p1ai/qa/question/view-5290%23:~:text=20:33%252027.08.2023 Пробую на iPadOS 16.6 (20G75), по умолчанию браузер Яндекс

Отлично, спасибо, проверю посмотрю в чем дело.

@BlackPatrick
Copy link

Uploading IMG_3759.jpeg…

@iprst
Copy link

iprst commented Aug 27, 2023

Видно, что ссылка в OS отдаётся с %23 вместо решётки # — с заменой символа всё работает, без замены тоже ошибка. Это генератор ссылки в айфоне съедает решётку согласно URL энкодеру.

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Видно, что ссылка в OS отдаётся с %23 вместо решётки # — с заменой символа всё работает, без замены тоже ошибка. Это генератор ссылки в айфоне съедает решётку согласно URL энкодеру.

Да, понятно, посмотрю, но уже завтра утром. Попробую в программе сделать url encode, предполагаю должно помочь.

@iprst
Copy link

iprst commented Aug 27, 2023

Наврал, после замены %23 решёткой # ссылка перестаёт быть мёртвой, но переход к комментарию не осуществляется: поскольку, хахаха, знак процента в уже энкодированной строке обозначающей пробел %20 внутри даты-времени, энкодируется второй раз и отдаётся вложенная конструкция %2520, то есть (энкодированный процент(энкодированный пробел)).

@audetv
Copy link
Contributor Author

audetv commented Aug 27, 2023

Пишет not found (#404) Вот например ссылка которую открывает под моим же последним постом https://xn----8sba0bbi0cdm.xn--p1ai/qa/question/view-5290%23:~:text=20:33%252027.08.2023 Пробую на iPadOS 16.6 (20G75), по умолчанию браузер Яндекс

Хорошо. Завтра протестирую на ios.

@audetv audetv reopened this Aug 27, 2023
@iprst
Copy link

iprst commented Aug 27, 2023

Завтра попробую на ноуте тоже с Яндексом протестить

Если макбук, то есть вероятность что будет то же самое, если это общесистемный обработчик macOS требует определённого формирования ссылки, но может быть что это зависит от версии системы.

Теперь интересно, а что происходит с другими ссылками, которые телеграм получает уже энкодированными, например из яндекса, где в ссылке часто пробелы, то бишь %20. Сделал в комментарии ссылку на яндекс с %20, можно посмотреть как она открывается с эппловских устройств.

@BlackPatrick
Copy link

BlackPatrick commented Aug 28, 2023

Нет, не Макбук. Классическая Винда. Проверю - отпишусь здесь.

Обн: Проверил, на ноуте ссылки работают корректно.

@BlackPatrick
Copy link

BlackPatrick commented Aug 28, 2023

Теперь интересно, а что происходит с другими ссылками, которые телеграм получает уже энкодированными, например из яндекса, где в ссылке часто пробелы, то бишь %20. Сделал в комментарии ссылку на яндекс с %20, можно посмотреть как она открывается с эппловских устройств.

Яндекс открыл ссылку и в строке поиска исправил %20 «Исправлена опечатка «си%20цзиньпин%20винни%20пух».

Обн: на ноутбуке эту ссылку тоже открыл корректно.

@audetv
Copy link
Contributor Author

audetv commented Aug 28, 2023

Внёс изменения, просьба проверить.
Начиная с этого сообщения https://t.me/svoddru/2648 ссылки должны быть рабочие.

Пришлось избавиться от передачи ссылки кириллицей и передаивать только в punycode, иначе на Ipad не работало.
Возможно позже смогу найти решение лучше, пока так.
Например, можно давать ссылку на svodd.ru и со svodd.ru делать редирект на ФКТ, Тогда ссылки в списке Shared links выглядели не так страшно, не уверен ,что это так важно, но обратил на это внимание.

Details

2023-08-28_11-48-50

И на ipad у меня не работают фрагменты ни на сафари, ни на яндекс браузере, переход происходил только на страницу вопроса.
Поставил chrome, в нём ссылки открываются и происходит переход к комментарию.

@audetv audetv removed a link to a pull request Aug 28, 2023
@BlackPatrick
Copy link

Внёс изменения, просьба проверить.

Да, теперь все работает. Спасибо. Теперь удобно читать и при необходимости зайти и прокомментировать

@iprst
Copy link

iprst commented Aug 28, 2023

Яндекс открыл ссылку и в строке поиска исправил %20 «Исправлена опечатка «си%20цзиньпин%20винни%20пух».

Ага, значит проблема была только в механизме передачи добавляемой парсером ссылки с URL encode, текст пользовательских уже кодированных ссылок изнутри сообщения воспринимается правильно.

@iprst
Copy link

iprst commented Aug 28, 2023

Пришлось избавиться от передачи ссылки кириллицей и передаивать только в punycode, иначе на Ipad не работало.
Возможно позже смогу найти решение лучше, пока так.

Получается что для уже встроенных в комментарий ссылок проблема не возникает, ошибка только при добавлении дополнительной ссылки на комментарий поверх сообщения. А проблема точно в кириллице, а не в двойном кодировании символа процента в уже кодированной ссылке? То есть на у получающего модуля нет проверки на валидность URL encode или что-то такое.

Например, можно давать ссылку на svodd.ru и со svodd.ru делать редирект на ФКТ, Тогда ссылки в списке Shared links выглядели не так страшно, не уверен ,что это так важно, но обратил на это внимание.

Страшно, но открываться должны, это же обычное декодирование кириллических символов. У меня не открывается только изначальная ссылка в которой двойное кодирование процента.

@audetv
Copy link
Contributor Author

audetv commented Aug 28, 2023

Получается что для уже встроенных в комментарий ссылок проблема не возникает, ошибка только при добавлении дополнительной ссылки на комментарий поверх сообщения. А проблема точно в кириллице, а не в двойном кодировании символа процента в уже кодированной ссылке? То есть на у получающего модуля нет проверки на валидность URL encode или что-то такое.

Не могу сказать точно, но проблема возникает именно в ios телеграмма, и именно при кодировании ссылок, т.е. в этой версии для Ios какой-то отличный способ обработки ссылок. Надо просто его найти и понять)
Ведь ссылки с сайта svodd.ru открываются на ipad, а там они указаны кириллицей и ничего дополнительно не сделано.
Возможно позже придет понимание, пока есть не понимание) буду проверять гипотезы

@iprst
Copy link

iprst commented Aug 28, 2023

Ведь ссылки с сайта svodd.ru открываются на ipad, а там они указаны кириллицей и ничего дополнительно не сделано.

Вот и дополнительный довод. В общем, можно иметь в виду.
Двойное кодирование, кстати, не будет открываться, можно проверить, вставив уже кодированную строку:
https://www.urlencoder.org

@audetv audetv mentioned this issue Aug 27, 2023
@audetv audetv closed this as completed Aug 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants