Démon API Telegram - Colle les messages séquentiels


Écrivez une pensée dans un message


Je fais partie de ces gens qui écrivent leurs pensées dans les messageries instantanées sur une seule phrase. Cela crée des inconvénients lors de la lecture de ce flux de pensée, car les messages successifs prennent rapidement de l'espace libre verticalement. Cela est particulièrement visible dans les chats de groupe - les notifications sont désactivées et vous devez faire défiler le chat pour voir la discussion si quelqu'un écrit de cette façon.

Arrête ça!


Je ne vais pas me recycler - je ne pense pas que ce soit un problème pour celui qui écrit, c'est si pratique pour lui - de recycler des millions de personnes est plus difficile que d'enseigner un programme. Les messages doivent être collés ensemble par le client lui-même, afin que cela soit pratique pour tout le monde , au moins facultativement. Je ne m'attendais pas à cela de la part de l'équipe Telegram - j'ai donc résolu le problème avec l'aide d'un petit client - un démon Python et j'ai décidé de partager le code source avec la communauté.
Détails, source et description sous la coupe.

Comment ça marche


L'un des principaux avantages de Telegram est sa synchronisation très rapide entre différents clients. L'API ouverte vous permet de créer vos propres clients et de nombreux autres ont déjà été écrits. Je ne vois aucun sens à écrire un client à part entière - la synchronisation vous permet de créer de petits services qui étendent les capacités de tous les clients sur toutes les plateformes à la fois. Plus tôt, j'ai expliqué comment vous pouvez augmenter la limite de téléchargement de fichiers du bot de 50 Mo à 1,5 Go , créer des canaux et d'autres fonctionnalités non disponibles via l'API Bot.

Un démon autorisé s'exécute sur le serveur 24/7, qui se synchronise avec les autres clients - il reçoit les messages entrants et sortants que j'envoie d'autres clients. Si la pause entre deux messages sortants consécutifs est inférieure à 30 s - le premier message est édité via l'API - le texte du deuxième message lui est ajouté et le deuxième message est supprimé. En raison de la synchronisation rapide, cela se produit presque instantanément.

Une courte vidéo au travail




Il serait également intéressant de déconnecter la notification de la même personne dans le chat si l'intervalle entre ses messages est petit et que les messages ne sont pas lus, mais cela ne peut pas être fait via l'API - nous attendrons donc cela des développeurs de Telegram.
UPD J'ai pensé et réalisé que c'était possible - il suffit de désactiver le chat pendant un certain temps, s'il y a un flux de messages d'une seule personne, mais il devrait déjà être utilisé par le destinataire pour utiliser ce démon

Traducteur en ligne


Dans le même temps, le traducteur a intégré - je pense également que cela devrait être dans le client lui-même. L'utilisation de robots en ligne n'est pas pratique pour un certain nombre de raisons, mais la principale est la suivante: je souhaite recevoir le texte traduit dans la ligne de saisie et ne pas l'envoyer au chat sans possibilité de modification.
En règle générale, vous devez vous souvenir d'une sorte de mot / phrase, et non de la phrase entière (souvent traduite de manière tordue).

La seule façon de synchroniser le texte saisi entre les clients sans envoyer de message consiste à utiliser les brouillons. Malheureusement, un brouillon est créé lors du passage d'un chat à une liste de chat, mais néanmoins, une telle béquille est plus pratique et plus rapide que l'utilisation de l'application de traduction Google, en copiant un insert.

À la fin de la ligne, ajoutez le code de langue



Balayez vers la droite pour accéder à la liste de discussion



Nous revenons - nous recevons la ligne traduite



La langue de la chaîne à traduire est déterminée automatiquement; Google est utilisé pour la traduction.

Langues prises en charge
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'} 


Sources Python AsyncIO


Github
Ajout également d'exécutables compilés pour Linux et Windows dans le référentiel - vous pouvez l'exécuter sur votre PC personnel, mais pour un travail 24h / 24 et 7j / 7, il est préférable d'utiliser VDS.

La dernière version de la bibliothèque de téléthon est utilisée pour accéder à l'API.

Si quelqu'un souhaite améliorer le projet - à Wellcome.

Vous pouvez lancer une idée, discuter et poser des questions dans un commentaire ou dans des télégrammes dans le profil info.

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


All Articles