Daemon Telegram API - merekatkan pesan sekuensial


Tulis pemikiran dalam satu pesan


Saya adalah salah satu dari orang-orang yang menulis pemikiran dalam kurir instan pada satu kalimat. Ini menciptakan beberapa ketidaknyamanan saat membaca aliran pemikiran ini, karena pesan yang berurutan dengan cepat mengambil ruang kosong secara vertikal. Ini terutama terlihat dalam obrolan grup - pemberitahuan dimatikan dan Anda harus menggulir melalui obrolan untuk melihat diskusi jika seseorang menulis dengan cara ini.

Hentikan itu!


Saya tidak akan melatih diri - saya pikir ini bukan masalah bagi orang yang menulis, sangat nyaman baginya - melatih jutaan orang lebih sulit daripada mengajar satu program. Pesan harus direkatkan bersama oleh klien sendiri, sehingga nyaman untuk semua orang , setidaknya secara opsional. Saya tidak pernah mengharapkan ini dari tim Telegram - jadi saya memecahkan masalah dengan bantuan klien kecil - daemon Python dan memutuskan untuk berbagi kode sumber dengan komunitas.
Detail, sumber, dan deskripsi di bawah potongan.

Bagaimana cara kerjanya


Salah satu keunggulan utama Telegram adalah sinkronisasi yang sangat cepat antara klien yang berbeda. API terbuka memungkinkan Anda membuat klien sendiri dan banyak alternatif telah ditulis. Saya tidak mengerti secara tertulis klien yang lengkap - sinkronisasi memungkinkan Anda untuk membuat layanan kecil yang memperluas kemampuan semua klien pada semua platform sekaligus. Sebelumnya, saya berbicara tentang bagaimana Anda dapat meningkatkan batas unggah file oleh bot dari 50MB menjadi 1,5GB , membuat saluran dan fitur lainnya yang tidak tersedia melalui Bot API.

Daemon resmi berjalan di server 24/7, yang menyinkronkan dengan klien lain - daemon itu menerima pesan masuk dan keluar yang dikirim oleh saya dari klien lain. Jika jeda antara dua pesan keluar berturut-turut kurang dari 30 detik - pesan pertama diedit melalui API - teks pesan kedua ditambahkan ke dalamnya, dan pesan kedua dihapus. Karena sinkronisasi cepat, ini terjadi hampir secara instan.

Video singkat di kantor




Akan lebih baik untuk memutus notifikasi dari orang yang sama dalam obrolan jika interval antara pesannya kecil dan pesan belum dibaca, tetapi ini tidak dapat dilakukan melalui API - jadi kami akan menunggu ini dari pengembang Telegram.
UPD saya berpikir dan menyadari bahwa itu mungkin - hanya bisu obrolan sebentar, jika ada aliran pesan dari satu orang, tetapi seharusnya sudah digunakan oleh penerima untuk menggunakan daemon ini

Penerjemah sebaris


Pada saat yang sama, penerjemah terintegrasi - saya juga berpikir bahwa ini harus berada di klien itu sendiri. Menggunakan bot inline tidak nyaman karena sejumlah alasan, tetapi yang utama adalah: Saya ingin menerima teks yang diterjemahkan di baris input, dan tidak mengirimnya ke obrolan tanpa kemungkinan mengedit.
Sebagai aturan, Anda perlu mengingat beberapa kata / frasa, dan bukan seluruh kalimat (sering diterjemahkan dengan bengkok).

Satu-satunya cara untuk menyinkronkan input teks antara klien tanpa mengirim pesan adalah melalui konsep. Sayangnya, konsep dibuat ketika beralih dari obrolan ke daftar obrolan, tetapi tetap saja, penopang seperti itu lebih nyaman dan lebih cepat daripada menggunakan aplikasi penerjemah google, menyalin sisipan.

Di akhir baris, tambahkan kode bahasa



Geser ke kanan untuk membuka daftar obrolan



Kami kembali - kami menerima baris yang diterjemahkan



Bahasa string yang akan diterjemahkan ditentukan secara otomatis, google digunakan untuk terjemahan.

Bahasa yang didukung
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'} 


Sumber Python AsyncIO


Github
Juga menambahkan executable yang dikompilasi untuk linux dan windows ke repositori - Anda dapat menjalankannya di PC rumah Anda, tetapi untuk pekerjaan 24/7 lebih baik menggunakan VDS.

Versi terbaru dari perpustakaan telethon digunakan untuk mengakses API.

Jika ada yang memiliki keinginan untuk meningkatkan proyek - untuk Wellcome.

Anda dapat memberikan ide, berdiskusi dan mengajukan pertanyaan dalam komentar atau telegram di profil info.

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


All Articles