Telegram API демон — склеиваем последовательные сообщения +6




Пиши мысль в одном сообщении


Я из тех людей, которые пишут мысль в мессенджерах по одному предложению. Это создает некоторые неудобства при чтении этого потока мысли так как последовательные сообщения быстро занимают свободное место по вертикали. Особенно это заметно в групповых чатах — уведомления отключены и для просмотра обсуждения приходится проматывать чат, если кто то пишет подобным образом.

Хватит это терпеть!


Переучивать себя я не собираюсь — не считаю это проблемой того кто пишет, ему так удобно — переучить миллионы людей сложнее чем научить одну программу. Сообщения должен склеивать сам клиент, чтобы было удобно всем, хотя бы опционально. От команды Telegram я этого так и не дождался — так что решил проблему при помощи небольшого клиента — демона на Python и решил поделиться с сообществом исходниками.
Подробности, исходники и описание под катом.

Как это работает


Одно из основных достоинств Telegram — действительно быстрая синхронизация между разными клиентами. Открытый API позволяет создавать свои клиенты и уже написано много альтернативных. Писать полноценный клиент я не вижу никакого смысла — синхронизация позволяет создавать небольшие сервисы, расширяющие возможности сразу всех клиентов на всех платформах. Ранее я рассказывал как можно увеличить лимит загрузки файлов ботом с 50МБ до 1.5ГБ, создавать каналы и другие возможности не доступные через Bot API.

На сервере 24/7 работает авторизованный демон, который синхронизируется с другими клиентами — получает как входящие сообщения, так и исходящие, которые отправляются мной с других клиентов. Если пауза между двумя последовательными исходящими сообщениями менее 30с — первое сообщение редактируется через API — к нему добавляется текст второго сообщения, а второе сообщение удаляется. За счет быстрой синхронизации это происходит практически мгновенно.

Небольшое видео в работе




Неплохо бы также было отключать оповещение от одного и того же человека в чате, если интервал между его сообщениями небольшой и сообщения не прочитаны, но это уже через API не сделать — так что будем ждать это от разработчиков Telegram.
UPD Подумал и понял что можно — просто мьютить чат на время, если идет поток сообщений от одного человека, но это уже должен и получатель пользоваться таким демоном

Inline переводчик


Заодно встроил переводчик — тоже считаю что это должно быть в самом клиенте. Использовать инлайн ботов неудобно по ряду причин, но основная из них: я хочу получить переведенный текст в строку ввода, а не отправить его в чат без возможности редактирования.
Как правило нужно вспомнить какое то слово/фразу, а не все предложение(зачастую переведенное криво).

Единственный способ синхронизировать вводимый текст между клиентами без отправки сообщения — это черновики. К сожалению черновик создается при переходе из чата в список чатов, но все равно такой костыль оказывается удобнее и быстрее использования приложения google translator, копирования вставки.

В конце строки добавляем код языка



Свайпом вправо переходим в список чатов



Заходим обратно — получаем переведенную строку



Язык переводимой строки определяется автоматически, для перевода используется google.

Поддерживаемые языки
supported_langs = {'Afrikaans': 'af', 'Irish': 'ga', 'Albanian': 'sq', 'Italian': 'it', 'Arabic': 'ar',
                   'Japanese': 'ja', 'Azerbaijani': 'az', 'Kannada': 'kn', 'Basque': 'eu', 'Korean': 'ko',
                   'Bengali': 'bn', 'Latin': 'la', 'Belarusian': 'be', 'Latvian': 'lv', 'Bulgarian': 'bg',
                   'Lithuanian': 'lt', 'Catalan': 'ca', 'Macedonian': 'mk', 'Chinese Simplified': 'zh-CN',
                   'Malay': 'ms', 'Chinese Traditional': 'zh-TW', 'Maltese': 'mt', 'Croatian': 'hr', 'Norwegian': 'no',
                   'Czech': 'cs', 'Persian': 'fa', 'Danish': 'da', 'Polish': 'pl', 'Dutch': 'nl', 'Portuguese': 'pt',
                   'English': 'en', 'Romanian': 'ro', 'Esperanto': 'eo', 'Russian': 'ru', 'Estonian': 'et',
                   'Serbian': 'sr', 'Filipino': 'tl', 'Slovak': 'sk', 'Finnish': 'fi', 'Slovenian': 'sl',
                   'French': 'fr', 'Spanish': 'es', 'Galician': 'gl', 'Swahili': 'sw', 'Georgian': 'ka',
                   'Swedish': 'sv', 'German': 'de', 'Tamil': 'ta', 'Greek': 'el', 'Telugu': 'te', 'Gujarati': 'gu',
                   'Thai': 'th', 'Haitian Creole': 'ht', 'Turkish': 'tr', 'Hebrew': 'iw', 'Ukrainian': 'uk',
                   'Hindi': 'hi', 'Urdu': 'ur', 'Hungarian': 'hu', 'Vietnamese': 'vi', 'Icelandic': 'is',
                   'Welsh': 'cy', 'Indonesian': 'id', 'Yiddish': 'yi'}


Исходники на Python AsyncIO


Гитхаб
Также добавил в репозиторий скомпилированные исполняемые файлы для linux и windows — запускать можно и на домашнем ПК, но для 24/7 работы лучше использовать VDS.

Для доступа к API используется последняя версия библиотеки telethon.

Если у кого то есть желание улучшить проект — велкам.

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

Вы можете помочь и перевести немного средств на развитие сайта



Комментарии (101):

  1. bask
    /#18958437 / +4

    Это создаёт не неудобства при чтении, а раздражают постоянные уведомления.
    Что приводит к игнорам таких писунов. Иногда навсегда.

    • SlavikMIPT
      /#18958441 / -3

      уведомления можно откючить, в чатах стандартно так и делается, если что — можно тегнуть человека/пин сделать с оповещением. Чат это не форум. К слову проблема с оповещениями частыми — тоже проблема несовершенства клиента — можно их не делать если часто идут, но это к сожалению поправить через API не получится, остается надеяться на команду Telegram

      • bask
        /#18958499 / +1

        «уведомления можно отключить» — это и есть игнор. Некоторые ещё и обижаются, что им не отвечают. А их просто уже не видят.
        Пишите реже.

        • SlavikMIPT
          /#18958585 / +1

          Интересна реакция зам. министра радиопромышленности СССР Н. В. Горшкова на предложение о выпуске этого компьютера. «Ребята, хватит заниматься ерундой! Персонального компьютера не может быть. Могут быть персональный автомобиль, персональная пенсия, персональная дача. Вы вообще знаете, что такое ЭВМ? ЭВМ — это 100 квадратных метров площади, 25 человек обслуживающего персонала и 30 литров спирта ежемесячно!».


          Когда у людей появляется потребность — нужно не учить людей жить как хотелось бы разработчикам, а делать продукты, которые удовлетворяют эту потребность, если неудобно читать много сообщений — клиент их может склеить, если напрягают уведомления — клиент их может отключать если они идут слишком часто.
          Вместо этого вы советуете людям меньше писать, говорить и учить больше языков, чтобы не пользоваться переводчиком. А чтобы батарея меньше разряжалась — можно телефоном меньше пользоваться, а чтобы поисковикам было проще индексировать документы — нужно меньше сайтов делать

          • DoctorMoriarty
            /#18958589

            Когда у людей появляется потребность — нужно не учить людей жить как хотелось бы разработчикам, а делать продукты, которые удовлетворяют эту потребность. (...)

            «Г-жа Простакова (сыну). Слышишь, друг мой сердечный? Это что за наука? (...)
            Правдин. Описание земли.
            Г-жа Простакова (Стародуму). А к чему бы это служило на первый случай?
            Стародум. На первый случай сгодилось бы и к тому, что ежели б случилось ехать, так знаешь, куда едешь.
            Г-жа Простакова. Ах, мой батюшка! Да извозчики-то на что ж? Это их дело. Это-таки и наука-то не дворянская. Дворянин только скажи: повези меня туда, свезут, куда изволишь.» (с)

            • Hardcoin
              /#18958731 / +1

              А какая связь? Я вот тоже не понимаю, какой смысл переучивать миллион человек, если можно "переучить" одну программу? Не пищать о следующем уведомлении по чату Х, если предыдущее было меньше минуты назад и не прочитано. Это реально так сложно? Уместна ли цитата про извозчика?

              • avost
                /#18960307

                Я вот тоже не понимаю, какой смысл переучивать миллион человек, если можно "переучить" одну программу?

                Очевидно, не все собеседники — упёртые самовлюблённые бараны. Если собеседник адекватен, а таких, всё-таки большинство, то уведомление на каждое сообщение — нормальное поведение и нет необходимости "переучивать" программу.


                Это реально так сложно?

                Это сломает типичный юзкейз. Смысла в этом никакого. Проще отправить неадеквата в игнор.

                • Hardcoin
                  /#18960319

                  Очевидно, не все собеседники — упёртые самовлюблённые бараны.

                  Разумеется, не все. Но если такой завелся, было бы круто, что б программа на его стороне не пиликала так часто и он не нервничал от этого.


                  Проще отправить неадеквата в игнор.

                  Смысл назвать неадекватом человека, который настаивает, что бы писали длиннее и реже? Может у него нервное что-то, а в остальном он хороший человек?


                  Типичный юзкейз — оповестить о сообщении. Если не будет пиликать каждые 5 секунд, никто не будет считать, что программа "сломалась".

                  • avost
                    /#18964487

                    Д


                          а

                    вс


                    ё


                         но

                    Р


                                                   ма

                    льн


                    о


                    ,


                    б


                    ро


                    , узб


                    аго


                    й


                    ся. Вс


                    ё д


                    ля тв


                    о


                    его бла


                    га!

                • PsyHaSTe
                  /#18961561

                  Это сломает типичный юзкейз. Смысла в этом никакого. Проще отправить неадеквата в игнор.

                  Какой-такой «типичный юзкейз» оно ломает и как?

                  Сделать программу, которая не раздражает ни отправителя, ни получателя невозможно?

                  • avost
                    /#18971753

                    Какой-такой «типичный юзкейз» оно ломает

                    Пиликать по приходу каждого сообщения.


                    и как?

                    Перестаёт пиликать по приходу каждого сообщения?


                    Сделать программу, которая не раздражает ни отправителя, ни получателя невозможно?

                    Не знаю. Но предлагаемое решение никуда не годится. Решение отключить для неадеквата нотификацию и отвечать ему не когда ему нужно, а когда о нём, наконец, вспомнят, намного лучше.

                    • PsyHaSTe
                      /#18972699

                      Пиликать по приходу каждого сообщения.

                      Что мешает не пиликать после каждого сообщения?
                      Перестаёт пиликать по приходу каждого сообщения?

                      да

          • Knorozow
            /#18958609

            Слушайте. По поводу цитаты. Этот министр ведь не единственный был кто так думал. Мне интересна их реакция, на то время, когда их ошибки стали явными для всех. Что они говорили по этому поводу. Как оправдывались.

            • adictive_max
              /#18958687

              А так ли уж сильно он был неправ, чтобы оправдываться? Тут скорее недопонимание в терминологии. Микро-ЭВМ вполне себе были, не было в них потребности как в персональном приборе.

              • Hardcoin
                /#18958745 / +1

                Основной косяк — это в одиночку судить о наличии "потребности". Мол, раз потребности нет, выпускать не будем. Потребность в такой игрушке, конечно, была (это мы и увидели очень быстро), но министр-то, он лучше знает, конечно.

                • adictive_max
                  /#18958859

                  ИМХО, всё дело в трактовке слова «персональный»:
                  «у нас» — домашний, для личных нужд
                  «у них» — компактный, для одного оператора

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

                  • PsyHaSTe
                    /#18961575

                    Другого значения слова «персональный» тогда не было. Собственно фраза переводится на современный просто: вычислительная техника в любом виде дома не найдет себе применения. Человеку трудно мыслить экспонентой развития, и представить себе что будет даже через 10 лет трудно. С этим надо жить, и уметь не делать ультимативные утверждения в духе «640к хватит всем».

              • Knorozow
                /#18958755 / -1

                наши преподы рассказывали как какой-то чиновник сказал: «Ну вот зачем вам(математикам, сейчас они программисты, а тогда, понятное дело все были математиками) ЭВМ? Вы ж так все задачи быстро перерешаете и что делать будете потом?»
                И в случае с Горшковым, дело же не в том что не было. Ему как раз привезли такой чтобы показать и продвинуть его в серию. Он конечно не мог думать что их не может быть физически. Но он видимо не захотел даже рассматривать перспективы такого формата, считая это ерундой.
                Ну для чего может понадобится эта маломощная коробка, эвм нужны для серьёзных задач, они мощные, а значит большие. Именно в этом смысле «не может быть», в смысле понятия «персональный компьютер» И именно в этом он был неправ.
                Кстати я глянул. Конкретно Горшков дожил до 1995. Тогда уже в каждом офисе стояли компы. И для игр их использовали. Да и приставки в каком-то смысле эвм.
                Кроме того, я ведь не только о нём говорю. Хотя тот чиновник, которого вспоминали наши преподы явно не дожил. Это было где-то в 50х или 60х.

          • ionik
            /#18962795

            Вместо этого вы советуете людям меньше писать

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

            Если собеседник пишет в таком стиле — наверное он не думает о том, как будут читать его сообщения — главное же выбросить свои мысли в чат-поток, а там разберутся. Отсюда всплывает вопрос уважения таким собеседником других участников диалога или чата. Идея с демоном немного исправляет последствия, проблема же в головах остается.

    • argamidon
      /#18958941 / +1

      Если вы не отключаете звуковые уведомления то мне вас жаль

      • vlivyur
        /#18961283

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

    • vlivyur
      /#18961257

      Да какие неудобства. Если один на один разговариваешь, то можно через часик ответить, когда испишется весь. Только надо помнить о такой особенности собеседника. Пусть и он знает о другой твоей особенности. И что отметка о прочтении не означает что я тут же начал строчить ответ.
      Хуже когда в чате встречаются таких двое, и одновременно начинают писать. Я таких редко комментирую, потому что ответишь на какую-то его реплику, а оказывается где-то выше есть условие противоречащее твоему ответу, просто ты, такой-сякой, не долистал до начала.

    • eugene_bb
      /#18963901 / +1

      Для себя в outlook сделал скрипт «помидор» с функциональностью типа:

      1. новые письма становятся видны только в окно видимости, например раз в 45 минут
      2. в режиме без помидора, новые сообщения консолидируются и показываются раз в 3 минуты (что-то типа полу-помидор)
      3. письма от некоторых пользователей и/или с приоритетом видны сразу

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

      Плюс мессанджере можно и статус показывать, типа «в помидоре, буду доступен через 17 минут»"

      Ещё раздражают те кто пишет что-то типа «привет» и ждут пока не ответишь и только потом начинают разговор по существу. Надо что робот на подобные фразы отвечал что-то типа «говори»

      • SlavikMIPT
        /#18963915

        ага — неплохая идея. На самом деле ключевой момент который я бы хотел обсудить — как можно сделать подобного демона как сервис? Я могу хоть сейчас его запустить как веб сервис, чтобы не нужно было себе на VDS ничего ставить, а просто залогиниться и все, включать/выключать и настраивать через веб кабинет. Но встает тогда вопрос — как пользователь может быть уверен в том, что давая доступ к своему аккаунту этому демону — он дает его именно той программе исходный код которой опубликован и что его данные будут обрабатываться так как описано в этом коде

        • eugene_bb
          /#18963995

          По моему мнению это должен IM клиент делать, сервис скорее всего не будет популярен.

          • SlavikMIPT
            /#18964043

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

            • eugene_bb
              /#18964097

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

  2. DoctorMoriarty
    /#18958581 / +7

    Представилось гипотетическое развитие идеи кем-нибудь в ближайшем будущем:

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

    • SlavikMIPT
      /#18958587 / -1

      Нет — я создам робота который за меня исправляет(кстати такой уже есть — прямо сейчас он в этом окне подчеркивает ошибки). Может подскажете — в каком месте нужно что то другим людям ставить? Или вы после этой строчки в комменты сразу?

      • bask
        /#18958619 / +2

        Эти роботы отвратительно работают. Например, фразу «Мне нравиться эта машина» они считают правильной. Люди не видят разницы в «чтобы» и «что бы», «пишите» и «пишете»… Такие программы тоже их не видят.

        • SlavikMIPT
          /#18958623

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

          • bask
            /#18958719 / -1

            Я особо не афиширую это, но я над таким проектом как раз работаю.

        • vlivyur
          /#18961323

          www.grammarly.com
          Довольно хорошо работает, по крайней мере с английским. Но с английским проще, чем с русским работать.

          • bask
            /#18965347

            Я знаю про этот проект. Но он с русским не дружит. Таких проектов на английском много — их проще клепать под механический английский язык. С русским работать никто не решается :)

        • PsyHaSTe
          /#18961577

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

    • bask
      /#18958607 / +2

      «Казнить нельзя помиловать» ни один плагин не преобразует правильно. Так что, писать грамотно всё-таки придётся

    • vlivyur
      /#18961155

      Слишком грамотно написано.

  3. astono0
    /#18958809

    Да не только частые уведомления раздражают от таких «собеседников».

    Также ситуации, когда открываешь чат, а там только треть предложения изложена. И понемногу дополняется… ужасно бесит.

    Если даже отбросить эти моменты, то я это воспринимаю как неуважение к собеседнику. Почему человек в голове не сложил окончательную мысль, и только потом не начал ее излагать? Почему он решил что кому-то интересен его мысленный поток именно в состоянии в котором он первично зародился?

    Когда читаешь такие сообщения, в голове образ в лучшем случаи ребенка который только научился говорить. Естественно, желания общаться с таким человеком нету.

    • SlavikMIPT
      /#18958837 / -3

      А с чего Вы взяли, что именно Ваш способ изложения и восприятия информации правильный? Почему под Вас должны подстраиваться, а не Вы под кого то? Люди разные — кто то законченную мысль формулирует, а кто то фиксирует сразу же — и задача технологий состоит в том, чтобы сопрягать эти интерфейсы — чтобы одному было удобно излагать, а другому было удобно воспринимать

      • nobodyhave
        /#18958921 / +1

        А что мешает зафиксировать кусок мысли, но не отправлять его в чат? Я примерно так и делаю, не жму Enter после каждой фразы, а постепенно дописываю мысль, фраза за фразой, потом проверяю, что получилось, а потом уже отправляю. Как e-mail, только в чате. Хотя, может я уже просто старый )

        • SlavikMIPT
          /#18958977 / -2

          А я не так, и еще куча людей не так, кто то сова, а кто то жаворонок, кто то правша, а кто то левша, одни слышат «лорел» другие «йенни», одни на китайском говорят, другие на английском, есть футы и метры…
          Люди разные, мир быстро меняется и меняет людей. Кто то быстрее адаптируется, кто то медленнее, кто то вообще не адаптируется, а кто то изначально отличается — и все это обусловлено быстрым развитием технологий и коммуникаций: кто то читает строчка за строчкой, я читаю в основном функционально, по ключевым словам, углубляясь только в то, что для меня важно в данный момент — у меня нет времени пропускать через себя всю информацию — ее слишком много. Аналогично с выдачей информации — чтобы сформулировать законченную мысль необходимо затратить время и энергию — например вот эту статью написать. И чтобы затратить это время должны быть весомые причины — например охват аудитории для которой этот пост и подготовленность этой аудитории. Если аудитория не находится в контексте нужно ее ввести сперва в него и только потом подавать информацию.
          Если же идет общение в чате — то те для кого ты пишешь как правило уже находятся в контексте нужном — от дополнительного форматирования их понимание не особо изменится, а время потратится. Кроме того — можно мысль закончить, а окажется что после первого же тезиса собеседник мог дополнительную информацию какую то сообщить, которая делает бессмысленным изложение последующее.
          Каждый прав в рамках своей картины мира, но картины мира разные и с развитием технологий — различия усилились, но с другой стороны — технологии же и позволяют нам эти различия скомпенсировать не создавая дискомфорта

          • nobodyhave
            /#18959431

            Кроме того — можно мысль закончить, а окажется что после первого же тезиса собеседник мог дополнительную информацию какую то сообщить, которая делает бессмысленным изложение последующее.
            О да, это вообще прекрасный момент в такой переписке. Вот написал собеседник что-то. Я хочу поправить, но вижу что он дальше пишет (чаты же умные, показывают это). Думаю, что наверное добавит что-то. Добавляет, но не то. И пишет дальше. И вот сидишь как дурак 5 минут и ждешь, пока он мысль закончит. А если не ждать, то беседа разваливается на части. Идет обсуждение первого куска мысли, второго, третьего. Все сообщения вперемешку. Потом перечитывать такое (если вдруг надо) просто ад.
            Можно конечно заняться своими делами и подождать, пока поток иссякнет, но тогда я отвечаю медленнее, так как нет смысла переключать контекст каждые несколько минут.
            В общем, клиенты конечно такую задачу решить могут. Но это должен будет делать каждый клиент каждого мессенджера, что тоже неудобно. Либо сервер, что дает ему больше нагрузки. А всего-то надо не нажимать Enter после каждой фразы. Если очень хочется, можно Ctrl + Enter или аналог.

            • SlavikMIPT
              /#18959453 / -3

              Я хочу поправить, но вижу что он дальше пишет (чаты же умные, показывают это).

              А можно и поправить, чтобы не продолжал человек неправильную мысль, а не тратить время заведомо впустую.
              Почему на интерпретируемых языках проще и быстрее программировать? Потому что они делают разработку более интерактивной — результат выполнения кода можно проверить сразу же, не формируя законченные блоки, а затем выискивать в них ошибку.
              А если не ждать, то беседа разваливается на части. Идет обсуждение первого куска мысли, второго, третьего. Все сообщения вперемешку. Потом перечитывать такое (если вдруг надо) просто ад.

              Конечно — лучше ничего не ответить просто — гораздо проще перечитывать, когда ничего не обсудили.
              Либо сервер, что дает ему больше нагрузки

              Больше нагрузки — это на сколько? На что нагрузку? Процессор? Память? Диск? Канал? IO? Желательно сравнение с нагрузкой, которую дает анализ всех сообщений пересылаемых через телеграм на предмет кодов авторизации, порнографии, террористов, спама и тд. А шифрование нагрузку какую дает? Может стоит от него отказаться, зачем заморочки лишние? Проще не скрывать ничего. Объединить 2 куска текста по вашему нагружает сервер сильно?

              А лучше вообще ничего не писать, ну чтоб беседу не разваливать на части, сервер не нагружать, клиенты удобные не делать лишний раз

          • vlivyur
            /#18961355

            Зачем вы написали такую простыню, а не разбили на несколько комментариев?

            у меня нет времени пропускать через себя всю информацию — ее слишком много
            У меня тоже. Нет времени на ожидание, когда вы соберёте всю нужную вам информацию.

      • astono0
        /#18959179 / -1

        А с чего Вы взяли, что я указываю какой способ подачи информации верный?

        Я лишь поделился своим отношением к этой ситуации. Максимально подробно описал свои мысли во время общения с такими людьми.

        Я против навязывания какой-либо модели поведения посторонним. Но и Вы должны спокойно принимать то, что Ваш способ общения большинство людей раздражает.

        • SlavikMIPT
          /#18959237

          А разве статья про обсуждение данной ситуации? Может быть от вашего или моего мнения по этому поводу что то изменится в людях? Я спокойно отношусь — даже что то делаю для того чтобы ее улучшить-написал рабочее решение, выложил исходники, потратил время на компилляцию под разные платформы, добавил свой прокси, потратил время на написание статьи и все ради того чтобы люди, имеющую такую же особенность увидели, попробовали, начали пользоапться и их текст бы стал значительно компактнее и удобнее к восприятию. В итоге всем хорошо, но нет-прибежали люди со своим мнением, поставили минусов, не написали ни одного комментария по теме, но зато уменьшили охват поста и количество людей, которым бы это пригодилось и в итоге вам же стало бы удобнее безо всяких действий с вашей стороны. Спасибо за внимание, ваше мнение очень важно для меня, когда дособеру свою перчатку бесконечности-щелчком пальцев обязательно поправлю этот момент в людях. А пока что — чем смог помог

    • PsyHaSTe
      /#18961591 / +1

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

      Вы совершенно адекватно в речи воспринимаете ответ собеседника более чем из нескольких предложений? Если да, то каким образом вы общаетесь? Ведь невозможно послать все сообщение за раз… Почему это не вызывает трудностей, а общение в чате — вызывает?

      • Rsa97
        /#18961921

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

        • PsyHaSTe
          /#18962793

          А в чате вы встречали людей с полуминутными фразами? Если да, то тогда наверное я могу вас понять. Обычно расстояние между фразами 0..10 секунд, с медианой около 1-2 секунд.

          • Rsa97
            /#18963133

            Собственно, первая же картинка в этой статье. Четыре фразы за три минуты.
            Ну и в чатах встречал неоднократно, не все успевают за десять секунд набрать осмысленное предложение.

      • withkittens
        /#18962023

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

        • PsyHaSTe
          /#18962809

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

      • astono0
        /#18962117

        Все зависит от конкретных ситуаций.

        Некоторые люди пишут 10 сообщений, которые являются одной фразой.
        Некоторые люди пишут несколько фраз, которые не стоит разбивать на отдельные сообщения.

        Есть чаты которые подразумевают под собой мьют, а есть которые нет.
        А есть которые не совсем, но из-за одного уникума тоже попадают под мьют.

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

        Считаю это вопросом культуры человека.

        • PsyHaSTe
          /#18962799

          А есть которые не совсем, но из-за одного уникума тоже попадают под мьют.

          А можно поподробнее, при чем тут мьют? Как постепенное написание текста может повлиять на решение внести чат в мьют?

          • vlivyur
            /#18963459

            Потому что этот уникум генерирует десяток уведомлений вместо одного.

            • PsyHaSTe
              /#18963505

              Это клиент генерирует десяток уведомлений.

              Что мешает клиенту генерировать одно уведомление на десяток сообщений?

              • SlavikMIPT
                /#18963899

                Подумал и понял что можно — просто мьютить чат на время, если идет поток сообщений от одного человека автоматически, а после таймаута возвращать обратно, но это уже должен и получатель пользоваться таким демоном

                • PsyHaSTe
                  /#18963919

                  Я не про демона, а про функциональность самого клиента. Причем лучше делать это на отправителе — вместо того, чтобы отправлять еще одно сообщение, редактировать предыдущее. Это идеальное решение.

                  Менее идеальное — фильтр на клиенте, который получает событие Update и показывает нотификацию если это другой пользователь или время между этим и последним сообщением > n.

                  Всё, никаких демонов, все просто в самом клиенте можно сделать, либо очень удобный вариант (первый), либо не назойливый (второй). Причем в обоих случаях клиент строго лучше, т.к. пользователи, пишущие сразу всё в одно сообщение никак не страдают и не чувствуют себя обделенными.

                  • SlavikMIPT
                    /#18963949

                    я согласен что это может (и должно) быть сделано средствами клиента, но в ближайшее время не думаю что стоит ожидать от Telegram обновлений по клиентам, кроме того — должны тогда все клиенты обновиться.
                    В BotAPI есть флаг enable_notification — при помощи него можно контролировать ботом — получит уведомление на это сообщение пользователь или нет.
                    Идеально я вижу так — в мейл агенте в волосатых годах была функция «разбудить собеседника» — аналогично в телеграме есть флаг notify_members при закреплении сообщения в чате. Нужно просто сделать возможность отключать по каждому пользователю, а не чату оповещения на время либо вручную либо автоматически, но при этом чтобы отправитель имел возможность форсировать оповещение на конкретное сообщение — то есть сделать не только жесткий мьют, но и мягкий — если что то действительно важное-отправитель имеет возможность оповестить.
                    Сообщения склеивать неправильно — это отдельные объекты должны быть, но клиент должен их визуально отображать по другому — группировать с возможностью выбора как группы, так и по отдельности

  4. SnoUweR
    /#18959079 / +1

    Не понимаю почему комментарии автора с оправданием своего стиля «писать кучу коротких сообщений, а не долго формулировать одно длинное» будто пытаются минусовать.
    Например, я хоть и понимаю, что многим людям не нравятся постоянные уведомления, но пишу абсолютно также. Просто потому что порой так привычнее, ибо похожим образом происходит и при обычном живом общении — ты не формулируешь в голове кучу предложений по нужной тебе теме, а высказываешься отрывками, и во время произнесения той или иной фразы в голове формулируются уже дальнейшие слова. Также и в текстовом общении, когда ты пишешь какой-то отрывок из потока мыслей, и в процессе написания и отправки уже формулируешь новое сообщение по той же теме. Конечно, можно возразить, что «текстовая переписка — это не реальное общение, тут порядки другие», но почему бы и нет. Это же не электронная почта, в конце концов, а IM.
    Да, конечно можно было, как предложили в комментариях, «зафиксировать кусок мысли, но не отправлять его в чат», но некоторые собеседники, пока ты пишешь огромное сообщение, могут уже и тему сменить. Да и некоторым проще воспринимать информацию отрывками, которые поступают с какой-то периодичностью, чем получать длинную пелену текста.

    • SlavikMIPT
      /#18959097

      а еще бывает — пишешь пишешь мысль, а потом раз и вылетело приложение и не сохранилось ничего

      • SnoUweR
        /#18959119

        Я за долгое время уже привык при написании длинных сообщений периодически делать Ctrl+A Ctrl+C, чтоб, если вдруг что, можно было из буфера восстановить хотя бы часть.
        Хотя иногда думаю, что было бы даже наверное удобно иметь какой-нибудь запущенный кейлоггер, который записывал бы все нажатые клавиши (и соответственно, написанные сообщения) за период 10-15 последних минут.

        • SlavikMIPT
          /#18959167

          Реально ощущение что люди дальше заголовка не читают, минусуют и бегут в комменты рассказывать про законченные мысли, когда сами не осилили прочитать мою законченную мысль и вообще понять о чем статья

    • AlexKeller
      /#18959105 / +1

      Проблема, в том числе, и в том, что если на чат хотя бы из 10 человек придется 3-4 пишущих подобным образом, то будет абсолютный хаос:
      — Первый
      — Первый
      — Второй
      — Второй
      — Второй
      — Первый
      — Второй
      — Второй
      А ты сиди и сопоставляй всю эту портянку в законченную мысль

      • SlavikMIPT
        /#18959141

        А без этого что лучше? Все вообще вперемешку. Я ни одного пока что конструктивного комментария не прочитал-чем хуже мое решение, чем вообще ничего? Есть вот такая данность, что многие люди пишут короткими сообщениями и меняться не собираются-чем плохо то, что немного структурированнее и компактней стали от них сообщения?

        • withkittens
          /#18959245

          Если есть решение, значит, есть проблема. Если решение — автоматически соединять последовательные сообщения, значит, есть проблема — кто-то пишет кучу маленьких сообщений, которые по отдельности смысла несут мало.

          Выше привели в пример безграмность. Сейчас летательные аппараты разбиваются нет ни одного робота, способного правильно семантически проанализировать текст. А семантика нужна, чтобы разрешать коллизии типа «казнить нельзя помиловать». А пока таких роботов нет, вы не можете оправдываться тем, что они появятся в будущем, а сейчас, дескать, вы будете писать безграмотно и это не ваша проблема.

          Далее, конкретно про вашего телеграм-бота. Если на вас, пишушего отдельными маленькими сообщениями, придётся хотя бы ещё один (а если не один?), то, как вы сами же и признаёте, ваше решение работать перестанет: цепочки будут разбиваться. И получится ровно то, с чего вы начали:

          1, 1,
          2,
          1, 1,
          2, 2,
          1, 1

          Вполне закономерно, что модератор чата попросит вас обоих не флудить.

          upd: А, ну собственно выше уже привели точно такой же пример. А теперь давайте их будет не двое, а четверо. И стоить заметить, что

          первый
          второй
          первый
          второй

          — это наверняка не четыре законченные мысли, а две, которые как были вперемешку, так и остались.

          • SlavikMIPT
            /#18959247

            И?

            • withkittens
              /#18959253

              Отличная аргументация!
              upd: О, и на личности переходим.

              Ну вот вы выше правильно обозначили проблему:

              Это создает некоторые неудобства при чтении этого потока мысли
              для просмотра обсуждения приходится проматывать чат
              Хватит это терпеть!
              Я говорю о том, что проблема не решена.

              • SlavikMIPT
                /#18959283

                upd: О, и на личности переходим.
                Уже переходите? А я пока на конструктиве сижу…
                Я говорю о том, что проблема не решена.

                Такое ощущение, что Вы мне денег заплатили — я не понимаю чего вы хотите?
                >Обозначил проблему.
                >Проблема не решалась никак вообще.
                >Сделал решение, которое существенно улучшает ситуацию без каких либо затрат и телодвижений со стороны тех чьи неудобства уменьшаются.
                >Предъявляют что не решил все проблемы человечества.
                Вы что то предлагаете по улучшению?
                Может быть решение ухудшает ситуацию?
                Пишите — я открыт к обсуждению и более того — готов что то сделать.

                Пока что я вижу этот код на питоне более эффективным в улучшении ситуации чем просто выражение своей позиции в комментах.

                • withkittens
                  /#18959593

                  Уже переходите? А я пока на конструктиве сижу…
                  Наличие или отсутствие у меня проблем с формальной логикой — это не конструктив, как и выражение досады по поводу сообщества.

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

                  • SlavikMIPT
                    /#18959757

                    Наличие или отсутствие у меня проблем с формальной логикой — это не конструктив,

                    Это мое оценочное суждение, я просто предположил
                    выражение досады по поводу сообщества.

                    по каким словам вы сделали вывод что я выразил досаду?

          • SlavikMIPT
            /#18959249

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

            • Barbaresk
              /#18959377 / -1

              По-вашему гуманитарии ущербны и не логичны? Вы ошибаетесь, причём как в том, что считаете «технарей» обязательно логичными, так и наоборот.

              • SlavikMIPT
                /#18959385

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

          • SlavikMIPT
            /#18959305

            Мне показалось или вы редактируете сообщение?
            А то вроде бы не было части текста, я отвечал на одно сообщение, а вы его изменили.
            Сложно подумать и мысль законченную сформулировать?
            А я то не могу после таймаута свое сообщение отредактировать уже…
            Значит функция редактирования не решает полностью все проблемы.
            Просто выражаю свою позицию

            • withkittens
              /#18959573

              Только добавил upd, выше не изменилось ни буквы.

        • AlexVist
          /#18961089

          Приветствую всех! Попробую дать конструктивный комментарий на основе примера как сам использовал функционал "склеивания" сообщений в Telegram.
          Кратко. Мне тяжело оценить полезность Вашего функционала. В определенном смысле удобнее читать одну длинную (склеенную) фразу, чем десяток частей из которых она состоит. Но тут вопрос больше в том чтобы объединились только те фразы, которые выражают одну мысль, или описывают одну тему. Может статься так, что Вы подряд изложили две мысли. И такое объединение уже несколько неудобно. Мне так кажется.
          Реально нужно понять какую задачу решает данный функционал.
          Теперь приведу пример как мне пригодилась возможность объединения сообщений. Я реализовывал чат-бот для работы системы СППР. И поскольку диалог с пользователем вела система условно в виде "вопрос-ответ". Но при этом вопрос + выбранный ответ = осмысленная человеко-читаемая фраза. Я использовал такой механизм: вопрос и инлайн кнопки варианты ответов. При выборе ответа происходит замена сообщения. При этом остается запись "вопрос+ответ". Что это дало? Компактное представление в виде протокола, который читается последовательно. Компактность — отсутствие лишней информации. В финале полученный текст давал протокол прохождения по алгоритму СППР. В случае с алгоритмом для службы поддержки появлялась возможность этот текст просто скопировать в заявку избавив пользователя от "сочинения" текста заявки. Возможность решить задачу самостоятельно инцидент на 1-м уровне. И ряд дополнительных плюсов.
          Применительно к контексту дискуссии, если использовать функционал редактирования сообщений в Telegram, в узкой сфере он полезен и удобен. В более широком смысле, наверняка, возникнет вопрос того, что не всем это удобно и приемлимо.

      • SlavikMIPT
        /#18959161

        А если бы использовали этот демон это бы превратилось в
        первый
        второй
        первый
        второй
        В джва раза меньше сообщений, чем без этого

  5. alexyr
    /#18959275

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

  6. maximw
    /#18959473

    Идея хорошая. Но могут быть и неудобства при активном написании в чат. Допустим, прочитал первую порцию сообщения. Потом пришла вторая и она визуально отделена от первой. Но в вашем решении редактируется первое сообщение. Это заставит меня перечитать его чтоб понять что изменилось, найти глазами что было добавлено. Ну и держать в голове что если еще не прошло 30 сек, то сообщение может снова измениться, как-то печально. Возможно при редактировании стоит визуально как-то отделять сообщения не только новой строкой. Можно использовать markdown, вставлять в каком то виде дату. Хотя с датой плохой вариант, у каждого клиента свое локальное время.

    • SlavikMIPT
      /#18959543

      наконец то что то по существу — думал над этим, можно поставить задержку на склеивание — если за сообщениями следят прямо сейчас — удобнее конечно когда каждое отдельно, склеивание становится актуально спустя несколько секунд после прочтения — с целью уменьшения места. Отделять сообщения друг от друга можно символом в начале строки вроде >> + $ и тд. Проблемы с датой я не понял проблемы — ну можно каждую новую минуту разделять цепочку, если так уж важно дату сохранять до минуты. Можно не первое сообщение редактировать, а последнее, чтобы не прыгал чат, а сверху вниз сжимался

      • maximw
        /#18959597

        Проблема с датой в том, что сообщение одно, дату в него можно записать только как текст. А у каждого клиента кто будет читать это сообщение свое время на клиенте.
        Вы в Москве, я в Лондоне. Чье время писать в дату?

        • SlavikMIPT
          /#18959611

          ничье — у меня демон во франции работает, а я в Москве — время клиент устанавливает, в облаке время по гринвичу у сообщений

    • SlavikMIPT
      /#18959557

      опять же — никто не мешает сделать настройки какие то для демона — в каких чатах работает в каких нет

  7. MaxShvedov
    /#18959515

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

    • SlavikMIPT
      /#18959521

      а со смартфона?

      • kloppspb
        /#18959607

        Тут да, иногда можно промахнуться. Но я всё-таки присоединюсь (к меньшинству?) — собеседник, шлющий сообщения в таком стиле, исключается из списка собеседников. Костыля в виде отдельного бота он не заслуживает.

  8. SlavikMIPT
    /#18959623

    интересно — до переводчика доберется кто нибудь)

    • eikoninaru
      /#18960099

      добрался. с пк не работает, только со смарта

      • SlavikMIPT
        /#18960109

        да-есть такое, какая то особенность десктопного клиента, но переводчик такой больше нужен на смартфоне — с пк проще вкладку с переводчиком открыть, а со смартфона — пока переключишься на приложение, пока скопируешь

  9. vlivyur
    /#18961215

    Хороший демон.

  10. vlivyur
    /#18961219

    Для Хабра бы ещё кто сделал такое.

  11. vlivyur
    /#18961221

    А то неудобно писать в таком стиле.

  12. Rsa97
    /#18961933 / +2

    Мысль о том, что такой стиль общения рублеными фразами крайне неудобен для многих — она, конечно, правильная. А вот выбранный способ исправления, IMHO, неудачен.
    Лучше уж тогда сделать свой промежуточный сервер, пусть он накапливает короткие сообщения в буфере, а в чат отправляет только если за 30 секунд — минуту ничего больше не пришло.

  13. decomeron
    /#18962617

    Дуров, верни стену

    Стена без крыши -деньги на ветер

  14. Certik
    /#18963759

    ИМХО, основная проблема демона в том, что его надо подключать самому «маяковскому» (которому может быть и вполне норм читать сообщения по три слова). При этом «толстому», которого «маяковский» бесит своими постоянными разбиениями одного предложения на какие-то странные куски, ничего с этим не сделать.

  15. IvUyr
    /#18964159

    Вот интересно было всегда, а может ли бот каким-нибудь образом склеивать сообщения так же, как демон автора, но не только у меня, а и у других участников группового чата? А то есть такие люди, которые и пишут вроде по делу, но читать по 20 сообщений с 2 — 3 словами… бесит до белого каления. Пришлось даже в правилах чата указать, что не более 5 сообщений подряд можно отправлять иначе readonly на 20 минут. (Самый смак, что это правило есть даже во flood.* чате.)

    • SlavikMIPT
      /#18964373

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