Telegramm-API-Daemon - Kleben Sie sequentielle Nachrichten


Schreiben Sie einen Gedanken in eine Nachricht


Ich bin einer von denen, die Gedanken in Instant Messenger über einen Satz schreiben. Dies führt zu Unannehmlichkeiten beim Lesen dieses Gedankenstroms, da aufeinanderfolgende Nachrichten schnell vertikal freien Speicherplatz beanspruchen. Dies macht sich insbesondere in Gruppenchats bemerkbar - Benachrichtigungen sind deaktiviert und Sie müssen durch den Chat scrollen, um die Diskussion zu sehen, wenn jemand auf diese Weise schreibt.

Hör auf!


Ich werde mich nicht neu schulen - ich glaube nicht, dass dies ein Problem für denjenigen ist, der schreibt, es ist für ihn so bequem - Millionen von Menschen umzuschulen ist schwieriger als ein Programm zu unterrichten. Nachrichten müssen vom Kunden selbst zusammengeklebt werden, damit sie zumindest optional für alle bequem sind . Ich habe das vom Telegrammteam nie erwartet - also habe ich das Problem mit Hilfe eines kleinen Clients - eines Python-Daemons - gelöst und beschlossen, den Quellcode mit der Community zu teilen.
Details, Quelle und Beschreibung unter dem Schnitt.

Wie funktioniert es?


Einer der Hauptvorteile von Telegram ist die sehr schnelle Synchronisation zwischen verschiedenen Clients. Mit der offenen API können Sie Ihre eigenen Clients erstellen, und viele alternative Clients wurden bereits geschrieben. Ich sehe keinen Sinn darin, einen vollwertigen Client zu schreiben. Durch die Synchronisierung können Sie kleine Services erstellen, die die Funktionen aller Clients auf allen Plattformen gleichzeitig erweitern. Zuvor habe ich darüber gesprochen, wie Sie das Limit für das Hochladen von Dateien durch den Bot von 50 MB auf 1,5 GB erhöhen , Kanäle und andere Funktionen erstellen können, die über die Bot-API nicht verfügbar sind.

Auf dem 24/7-Server wird ein autorisierter Dämon ausgeführt, der mit anderen Clients synchronisiert wird. Er empfängt sowohl eingehende als auch ausgehende Nachrichten, die von mir von anderen Clients gesendet werden. Wenn die Pause zwischen zwei aufeinanderfolgenden ausgehenden Nachrichten weniger als 30 Sekunden beträgt - die erste Nachricht wird über die API bearbeitet -, wird der Text der zweiten Nachricht hinzugefügt und die zweite Nachricht gelöscht. Aufgrund der schnellen Synchronisation geschieht dies fast sofort.

Ein kurzes Video bei der Arbeit




Es wäre auch schön, die Benachrichtigung von derselben Person im Chat zu trennen, wenn das Intervall zwischen seinen Nachrichten klein ist und die Nachrichten nicht gelesen wurden. Dies kann jedoch nicht über die API erfolgen. Wir werden daher von den Telegrammentwicklern darauf warten.
UPD Ich dachte und erkannte, dass es möglich ist - schalten Sie den Chat nur für eine Weile stumm, wenn ein Strom von Nachrichten von einer Person vorhanden ist, aber der Empfänger sollte ihn bereits zur Verwendung dieses Dämons verwenden

Inline-Übersetzer


Zur gleichen Zeit hat der Übersetzer eingebaut - ich denke auch, dass dies im Client selbst sein sollte. Die Verwendung von Inline-Bots ist aus mehreren Gründen unpraktisch, aber der wichtigste ist: Ich möchte den übersetzten Text in der Eingabezeile erhalten und ihn nicht ohne die Möglichkeit der Bearbeitung an den Chat senden.
In der Regel müssen Sie sich an ein Wort / eine Phrase erinnern und nicht an den gesamten Satz (oft schief übersetzt).

Die einzige Möglichkeit, Eingabetext zwischen Clients zu synchronisieren, ohne eine Nachricht zu senden, besteht in Entwürfen. Leider wird beim Wechsel von einem Chat zu einer Chat-Liste ein Entwurf erstellt. Dennoch ist eine solche Krücke bequemer und schneller als die Verwendung der Google Übersetzer-Anwendung zum Kopieren einer Beilage.

Fügen Sie am Ende der Zeile den Sprachcode hinzu



Wischen Sie nach rechts, um zur Chat-Liste zu gelangen



Wir gehen zurück - wir erhalten die übersetzte Zeile



Die Sprache der zu übersetzenden Zeichenfolge wird automatisch bestimmt, Google wird für die Übersetzung verwendet.

Unterstützte Sprachen
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-Quellen


Github
Außerdem wurden dem Repository kompilierte ausführbare Dateien für Linux und Windows hinzugefügt. Sie können sie auf Ihrem Heim-PC ausführen. Für die Arbeit rund um die Uhr ist es jedoch besser, VDS zu verwenden.

Die neueste Version der Telethon- Bibliothek wird verwendet, um auf die API zuzugreifen.

Wenn jemand den Wunsch hat, das Projekt zu verbessern - zu Wellcome.

Sie können eine Idee werfen, diskutieren und Fragen in einem Kommentar oder in Telegrammen im Infoprofil stellen.

Source: https://habr.com/ru/post/de419249/


All Articles