ProHoster > blog > administrasi > Menulis bot telegram di R (bagian 1): Membuat bot dan menggunakannya untuk mengirim pesan di telegram
Menulis bot telegram di R (bagian 1): Membuat bot dan menggunakannya untuk mengirim pesan di telegram
Pemirsa Telegram tumbuh secara eksponensial setiap hari, hal ini difasilitasi oleh kenyamanan messenger, kehadiran saluran, obrolan, dan tentu saja kemampuan membuat bot.
Bot dapat digunakan untuk tujuan yang sangat berbeda, mulai dari mengotomatiskan komunikasi dengan pelanggan hingga mengelola tugas Anda sendiri.
Pada dasarnya, Anda dapat menggunakan telegram untuk melakukan operasi apa pun melalui bot: mengirim atau meminta data, menjalankan tugas di server, mengumpulkan informasi ke dalam database, mengirim email, dan sebagainya.
Saya berencana untuk menulis serangkaian artikel tentang cara bekerja dengannya API bot telegram, dan tulis bot sesuai kebutuhan Anda.
Pada artikel pertama ini kita akan mengetahui cara membuat bot telegram dan menggunakannya untuk mengirim notifikasi di telegram.
Hasilnya, kami akan memiliki bot yang akan memeriksa status eksekusi terakhir semua tugas di Penjadwal Tugas Windows, dan mengirimi Anda pemberitahuan jika ada yang gagal.
Namun tujuan dari rangkaian artikel ini bukan untuk mengajari Anda cara menulis bot untuk tugas yang spesifik dan sempit, tetapi untuk memperkenalkan Anda secara umum pada sintaksis paket. telegram.bot, dan contoh kode yang dapat digunakan untuk menulis bot untuk menyelesaikan masalah Anda sendiri.
kadar
Jika Anda tertarik dengan analisis data, Anda mungkin tertarik dengan saya Telegram ΠΈ Youtube saluran. Sebagian besar konten didedikasikan untuk bahasa R.
Pertama, kita perlu membuat bot. Ini dilakukan dengan menggunakan bot khusus ayah kedua, pergi ke link dan menulis ke bot /start.
Setelah itu Anda akan menerima pesan dengan daftar perintah:
Pesan dari Ayah Bot
I can help you create and manage Telegram bots. If you're new to the Bot API, please see the manual (https://core.telegram.org/bots).
You can control me by sending these commands:
/newbot - create a new bot
/mybots - edit your bots [beta]
Edit Bots
/setname - change a bot's name
/setdescription - change bot description
/setabouttext - change bot about info
/setuserpic - change bot profile photo
/setcommands - change the list of commands
/deletebot - delete a bot
Bot Settings
/token - generate authorization token
/revoke - revoke bot access token
/setinline - toggle inline mode (https://core.telegram.org/bots/inline)
/setinlinegeo - toggle inline location requests (https://core.telegram.org/bots/inline#location-based-results)
/setinlinefeedback - change inline feedback (https://core.telegram.org/bots/inline#collecting-feedback) settings
/setjoingroups - can your bot be added to groups?
/setprivacy - toggle privacy mode (https://core.telegram.org/bots#privacy-mode) in groups
Games
/mygames - edit your games (https://core.telegram.org/bots/games) [beta]
/newgame - create a new game (https://core.telegram.org/bots/games)
/listgames - get a list of your games
/editgame - edit a game
/deletegame - delete an existing game
Untuk membuat bot baru, kirimkan perintah /newbot.
Botfather akan meminta Anda memasukkan nama bot dan login.
BotFather, [25.07.20 09:39]
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
Alexey Seleznev, [25.07.20 09:40]
My Test Bot
BotFather, [25.07.20 09:40]
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
Alexey Seleznev, [25.07.20 09:40]
@my_test_bot
Anda dapat memasukkan nama apa pun, tetapi login harus diakhiri dengan bot.
Jika Anda melakukan semuanya dengan benar, Anda akan menerima pesan berikut:
Done! Congratulations on your new bot. You will find it at t.me/my_test_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
123456789:abcdefghijklmnopqrstuvwxyz
For a description of the Bot API, see this page: https://core.telegram.org/bots/api
Selanjutnya Anda memerlukan token API yang diterima, dalam contoh saya 123456789:abcdefghijklmnopqrstuvwxyz.
Pada langkah ini, pekerjaan persiapan untuk membuat bot selesai.
Menginstal paket untuk bekerja dengan bot telegram di R
Saya berasumsi Anda sudah menginstal bahasa R dan lingkungan pengembangan RStudio. Jika tidak demikian, Anda dapat melihatnya pelajaran video tentang cara menginstalnya.
Untuk bekerja dengan Telegram Bot API kami akan menggunakan paket R telegram.bot.
Menginstal paket di R dilakukan dengan menggunakan fungsi install.packages(), jadi untuk menginstal paket yang kita perlukan, gunakan perintah install.packages("telegram.bot").
Anda dapat mempelajari lebih lanjut tentang menginstal berbagai paket dari video ini.
Setelah menginstal paket, Anda perlu menghubungkannya:
library(telegram.bot)
Mengirim pesan dari R ke Telegram
Bot yang Anda buat dapat ditemukan di Telegram menggunakan login yang ditentukan saat pembuatan, dalam kasus saya demikian @my_test_bot.
Kirimkan pesan apa pun kepada bot, seperti "Hai bot". Saat ini, kami memerlukannya untuk mendapatkan id obrolan Anda dengan bot.
Awalnya, kami membuat instance bot kami dengan fungsi tersebut Bot(), token yang diterima sebelumnya harus diteruskan ke dalamnya sebagai argumen.
Menyimpan token dalam kode bukanlah praktik terbaik, sehingga Anda dapat menyimpannya dalam variabel lingkungan dan membacanya. Secara default dalam paket telegram.bot Dukungan untuk variabel lingkungan dengan nama berikut telah diterapkan: R_TELEGRAM_BOT_ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π... Dari pada ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π gantikan nama yang Anda tentukan saat membuat, dalam kasus saya itu akan menjadi variabel R_TELEGRAM_BOT_My Test Bot.
Ada beberapa cara untuk membuat variabel lingkungan, saya akan memberi tahu Anda tentang cara yang paling universal dan lintas platform. Buat di direktori home Anda (Anda dapat menemukannya menggunakan perintah path.expand("~")) file teks dengan nama .Renviron. Anda juga dapat melakukan ini menggunakan perintah file.edit(path.expand(file.path("~", ".Renviron"))).
Selanjutnya, Anda dapat menggunakan token yang disimpan dalam variabel lingkungan menggunakan fungsi tersebut bot_token(), yaitu. seperti ini:
bot <- Bot(token = bot_token("My Test Bot"))
metode getUpdates()memungkinkan kita mendapatkan pembaruan bot, mis. pesan-pesan yang dikirimkan kepadanya. metode from_chat_id(), memungkinkan Anda mendapatkan ID obrolan tempat pesan dikirim. Kami membutuhkan ID ini untuk mengirim pesan dari bot.
Selain id chat dari objek yang diperoleh dengan metode tersebut getUpdates() Anda juga menerima beberapa informasi berguna lainnya. Misalnya informasi tentang pengguna yang mengirim pesan.
Jadi, pada tahap ini kita sudah memiliki semua yang kita perlukan untuk mengirim pesan dari bot ke Telegram. Ayo gunakan metode ini sendMessage(), yang mana Anda harus meneruskan ID obrolan, teks pesan, dan jenis markup teks pesan. Jenis markup dapat berupa Markdown atau HTML dan ditentukan oleh argumen parse_mode.
Itu. misalnya menggunakan metode sendPhoto() Anda dapat mengirim grafik yang disimpan sebagai gambar yang Anda buat menggunakan paket ggplot2.
Memeriksa Penjadwal Tugas Windows dan mengirimkan pemberitahuan tentang tugas yang dihentikan secara tidak normal
Untuk bekerja dengan Penjadwal Tugas Windows, Anda perlu menginstal paketnya taskscheduleR, dan untuk kenyamanan bekerja dengan data, instal paketnya dplyr.
Selanjutnya, menggunakan fungsi tersebut taskscheduler_ls() kami meminta informasi tentang tugas dari penjadwal kami. Menggunakan fungsi filter() dari paket dplyr Kami menghapus dari daftar tugas yang berhasil diselesaikan dan memiliki status hasil terakhir 0, dan tugas yang belum pernah diluncurkan dan berstatus 267011, tugas yang dinonaktifkan, dan tugas yang sedang berjalan.
Saat menggunakan contoh di atas, gantikan token bot dan ID chat Anda ke dalam kode.
Anda dapat menambahkan ketentuan untuk memfilter tugas, misalnya, hanya memeriksa tugas yang Anda buat, tidak termasuk tugas sistem.
Anda juga dapat memasukkan berbagai pengaturan ke dalam file konfigurasi terpisah, dan menyimpan id obrolan dan token di dalamnya. Anda dapat membaca konfigurasinya, misalnya menggunakan paket configr.
Menyiapkan jadwal untuk menjalankan pemindaian tugas
Proses pengaturan peluncuran skrip sesuai jadwal dijelaskan lebih detail di sini Artikel. Disini saya hanya akan menjelaskan langkah-langkah yang perlu diikuti untuk itu. Jika ada langkah yang tidak jelas bagi Anda, lihat artikel yang saya berikan tautannya.
Mari kita asumsikan bahwa kita menyimpan kode bot kita ke sebuah file check_bot.R. Untuk menjadwalkan file ini agar berjalan secara rutin, ikuti langkah-langkah berikut:
Tulis path ke folder tempat R diinstal di variabel sistem Path; di Windows, pathnya akan seperti ini: C:Program FilesRR-4.0.2bin.
Buat file bat yang dapat dieksekusi hanya dengan satu baris R CMD BATCH C:rscriptscheck_botcheck_bot.R. Mengganti C:rscriptscheck_botcheck_bot.R ke path lengkap ke file R Anda.
Selanjutnya, gunakan Windows Task Scheduler untuk mengatur jadwal peluncuran, misalnya setiap setengah jam.
Kesimpulan
Pada artikel ini, kami menemukan cara membuat bot dan menggunakannya untuk mengirim berbagai notifikasi di telegram.
Saya telah menjelaskan tugas memantau Penjadwal Tugas Windows, tetapi Anda dapat menggunakan materi dalam artikel ini untuk mengirimkan pemberitahuan apa pun, mulai dari ramalan cuaca hingga harga saham di bursa, karena R memungkinkan Anda terhubung ke sejumlah besar sumber data.
Pada artikel selanjutnya, kita akan mengetahui cara menambahkan perintah dan keyboard ke bot sehingga tidak hanya dapat mengirim notifikasi, tetapi juga melakukan tindakan yang lebih kompleks.