Telegram API daemon - pegar mensajes secuenciales


Escribe un pensamiento en un mensaje


Soy una de esas personas que escriben pensamientos en mensajeros instantáneos en una oración. Esto crea algunos inconvenientes al leer este flujo de pensamiento, ya que los mensajes sucesivos ocupan rápidamente el espacio libre verticalmente. Esto es especialmente notable en los chats grupales: las notificaciones están desactivadas y debe desplazarse por el chat para ver la discusión si alguien escribe de esta manera.

Basta!


No voy a volver a entrenarme, no creo que esto sea un problema para quien escribe, es muy conveniente para él, volver a entrenar a millones de personas es más difícil que enseñar un programa. Los mensajes deben estar pegados por el propio cliente, para que sea conveniente para todos , al menos opcionalmente. Nunca esperé esto del equipo de Telegram, así que resolví el problema con la ayuda de un pequeño cliente, un demonio Python y decidí compartir el código fuente con la comunidad.
Detalles, fuente y descripción debajo del corte.

Como funciona


Una de las principales ventajas de Telegram es su sincronización realmente rápida entre diferentes clientes. La API abierta le permite crear sus propios clientes y ya se han escrito muchos otros. No creo que tenga sentido escribir un cliente completo: la sincronización le permite crear pequeños servicios que amplían las capacidades de todos los clientes en todas las plataformas a la vez. Anteriormente, hablé sobre cómo puede aumentar el límite de carga de archivos por parte del bot de 50 MB a 1,5 GB , crear canales y otras funciones que no están disponibles a través de la API de Bot.

Un daemon autorizado se ejecuta en el servidor 24/7, que se sincroniza con otros clientes; recibe mensajes entrantes y salientes que yo envío de otros clientes. Si la pausa entre dos mensajes salientes consecutivos es inferior a 30 s (el primer mensaje se edita a través de la API), se agrega el texto del segundo mensaje y se elimina el segundo mensaje. Debido a la rápida sincronización, esto ocurre casi al instante.

Un video corto en el trabajo




También sería bueno desconectar la notificación de la misma persona en el chat si el intervalo entre sus mensajes es pequeño y los mensajes no se han leído, pero esto no se puede hacer a través de la API, por lo que esperaremos esto de los desarrolladores de Telegram.
UPD pensé y me di cuenta de que es posible: solo silencia el chat por un tiempo, si hay una secuencia de mensajes de una persona, pero el destinatario ya debería usarlo para usar este demonio

Traductor en línea


Al mismo tiempo, el traductor incorporado, también creo que esto debería estar en el propio cliente. El uso de bots en línea es inconveniente por varias razones, pero la principal es: quiero recibir el texto traducido en la línea de entrada y no enviarlo al chat sin la posibilidad de editarlo.
Como regla general, debe recordar algún tipo de palabra / frase, y no toda la oración (a menudo traducida torcidamente).

La única forma de sincronizar el texto de entrada entre clientes sin enviar un mensaje es a través de borradores. Desafortunadamente, se crea un borrador cuando se cambia de un chat a una lista de chat, pero aún así, una muleta es más conveniente y más rápida que usar la aplicación de traductor de Google, copiar una inserción.

Al final de la línea, agregue el código de idioma



Desliza hacia la derecha para ir a la lista de chat



Regresamos - recibimos la línea traducida



El idioma de la cadena a traducir se determina automáticamente; Google se utiliza para la traducción.

Idiomas soportados
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'} 


Fuentes de Python AsyncIO


Github
También agregó ejecutables compilados para Linux y Windows al repositorio: puede ejecutarlo en la PC de su hogar, pero para trabajar las 24 horas, los 7 días de la semana, es mejor usar VDS.

La última versión de la biblioteca telethon se utiliza para acceder a la API.

Si alguien desea mejorar el proyecto, a Wellcome.

Puede lanzar una idea, discutir y hacer preguntas en un comentario o en telegramas en el perfil de información.

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


All Articles