ProHoster > Blog > Ma'muriyat > R-da telegramma bot yozish (1-qism): Bot yaratish va undan telegrammada xabar yuborish uchun foydalanish
R-da telegramma bot yozish (1-qism): Bot yaratish va undan telegrammada xabar yuborish uchun foydalanish
Telegram auditoriyasi har kuni eksponent ravishda o'sib bormoqda, bunga messenjerning qulayligi, kanallar, chatlarning mavjudligi va, albatta, botlarni yaratish qobiliyati yordam beradi.
Botlardan butunlay boshqa maqsadlarda, mijozlar bilan muloqotni avtomatlashtirishdan tortib, oβz vazifalaringizni boshqarishgacha foydalanish mumkin.
Asosan, siz bot orqali istalgan operatsiyalarni bajarish uchun telegramdan foydalanishingiz mumkin: ma'lumotlarni yuborish yoki so'rash, serverda vazifalarni bajarish, ma'lumotlar bazasiga ma'lumot to'plash, elektron pochta xabarlarini yuborish va hokazo.
Men qanday ishlash kerakligi haqida bir qator maqolalar yozishni rejalashtirmoqdaman telegram bot API, va ehtiyojlaringizga mos botlarni yozing.
Ushbu birinchi maqolada biz telegram botini qanday yaratish va undan telegramda bildirishnomalarni yuborish uchun foydalanishni aniqlaymiz.
Natijada, Windows Task Scheduler-dagi barcha vazifalarning oxirgi bajarilishi holatini tekshiradigan va ulardan birontasi bajarilmasa, sizga xabarnoma yuboradigan botga ega bo'lamiz.
Ammo ushbu maqolalar turkumining maqsadi aniq, tor vazifa uchun qanday bot yozishni o'rgatish emas, balki sizni umuman paketning sintaksisi bilan tanishtirishdir. telegram.bot, va o'zingizning muammolaringizni hal qilish uchun botlarni yozishingiz mumkin bo'lgan kod misollari.
Mundarija
Agar siz ma'lumotlarni tahlil qilish bilan qiziqsangiz, meni qiziqtirishi mumkin telegramma ΠΈ youtube kanallar. Kontentning katta qismi R tiliga bag'ishlangan.
Birinchidan, biz bot yaratishimiz kerak. Bu maxsus bot yordamida amalga oshiriladi BotOta, ga boring aloqa va botga yozing /start.
Shundan so'ng siz buyruqlar ro'yxati bilan xabar olasiz:
BotFatherdan xabar
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
Yangi bot yaratish uchun buyruq yuboring /newbot.
BotFather sizdan bot nomi va login kiritishingizni so'raydi.
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
Siz istalgan nomni kiritishingiz mumkin, lekin login bilan tugashi kerak bot.
Agar siz hamma narsani to'g'ri bajargan bo'lsangiz, siz quyidagi xabarni olasiz:
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
Keyinchalik sizga qabul qilingan API tokeni kerak bo'ladi, mening misolimda shunday 123456789:abcdefghijklmnopqrstuvwxyz.
Ushbu bosqichda botni yaratish uchun tayyorgarlik ishlari yakunlanadi.
R da telegram boti bilan ishlash paketini o'rnatish
Sizda allaqachon R tili va RStudio ishlab chiqish muhiti o'rnatilgan deb o'ylayman. Agar bunday bo'lmasa, unda siz buni ko'rishingiz mumkin video darslik ularni qanday o'rnatish haqida.
Telegram Bot API bilan ishlash uchun biz R paketidan foydalanamiz telegram.bot.
R da paketlarni o'rnatish funksiya yordamida amalga oshiriladi install.packages(), shuning uchun bizga kerak bo'lgan paketni o'rnatish uchun buyruqdan foydalaning install.packages("telegram.bot").
Turli paketlarni o'rnatish haqida ko'proq bilib olishingiz mumkin bu video.
Paketni o'rnatgandan so'ng, uni ulashingiz kerak:
library(telegram.bot)
R-dan Telegram-ga xabarlar yuborish
Siz yaratgan botni Telegramda yaratish vaqtida ko'rsatilgan login yordamida topish mumkin, mening holimda shunday @my_test_bot.
Botga har qanday xabarni yuboring, masalan, "Hey bot". Ayni paytda bot bilan suhbatingiz identifikatorini olish uchun bizga bu kerak.
Dastlab, funksiya bilan botimizning namunasini yaratamiz Bot(), ilgari olingan token argument sifatida unga uzatilishi kerak.
Tokenni kodda saqlash eng yaxshi amaliyot deb hisoblanmaydi, shuning uchun uni muhit oΚ»zgaruvchisida saqlashingiz va undan oΚ»qishingiz mumkin. Paketda sukut bo'yicha telegram.bot Quyidagi nomdagi muhit o'zgaruvchilari uchun qo'llab-quvvatlash amalga oshirildi: R_TELEGRAM_BOT_ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π... Buning o'rniga ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π yaratishda siz ko'rsatgan nomni almashtiring, mening holimda u o'zgaruvchi bo'ladi R_TELEGRAM_BOT_My Test Bot.
Atrof-muhit o'zgaruvchisini yaratishning bir necha yo'li mavjud; men sizga eng universal va o'zaro faoliyat platformalar haqida gapirib beraman. Uy katalogingizda yarating (uni buyruq yordamida topishingiz mumkin path.expand("~")) nomli matn fayli .Renviron. Buni buyruq yordamida ham qilishingiz mumkin file.edit(path.expand(file.path("~", ".Renviron"))).
Keyinchalik, funksiyadan foydalanib, muhit o'zgaruvchisida saqlangan tokendan foydalanishingiz mumkin bot_token(), ya'ni. mana bunday:
bot <- Bot(token = bot_token("My Test Bot"))
usul getUpdates()bizga bot yangilanishlarini olish imkonini beradi, ya'ni. unga yuborilgan xabarlar. Usul from_chat_id(), xabar yuborilgan suhbatning identifikatorini olish imkonini beradi. Botdan xabar yuborish uchun bizga ushbu identifikator kerak.
Usul bilan olingan ob'ektdan suhbat identifikatoriga qo'shimcha ravishda getUpdates() boshqa foydali ma'lumotlarni ham olasiz. Masalan, xabarni yuborgan foydalanuvchi haqida ma'lumot.
Shunday qilib, ushbu bosqichda bizda Telegram-ga botdan xabar yuborish uchun kerak bo'lgan hamma narsa mavjud. Keling, usuldan foydalanaylik sendMessage(), unga chat ID, xabar matni va xabar matni belgilash turini kiritishingiz kerak. Belgilash turi Markdown yoki HTML bo'lishi mumkin va argument tomonidan o'rnatiladi parse_mode.
Odatda dastur kodini ajratib ko'rsatish uchun ishlatiladigan monobo'shliq shrifti apostroflar yordamida belgilanadi - `:
misol: `bir fazo shrifti`
natija: ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
HTML belgilarini formatlash asoslari:
HTMLda siz matnning teglarda ta'kidlanishi kerak bo'lgan qismini o'rab olasiz, masalan <ΡΠ΅Π³>ΡΠ΅ΠΊΡΡ</ΡΠ΅Π³>.
<tag> - ochilish tegi
- yopish belgisi
HTML belgilash teglari
<b> - qalin shrift
misol: <b>ΠΆΠΈΡΠ½ΡΠΉ ΡΡΠΈΡΡ</b>
ta'siri qalin shrift
<i> - kursiv
misol: <i>ΠΊΡΡΡΠΈΠ²</i>
natija: kursiv
β ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
misol: ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
natija: ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
Matnga qo'shimcha ravishda siz maxsus usullardan foydalangan holda boshqa tarkibni yuborishingiz mumkin:
Bular. masalan, usuldan foydalanish sendPhoto() paket yordamida yaratilgan rasm sifatida saqlangan grafikni yuborishingiz mumkin ggplot2.
Windows Task Scheduler-ni tekshirish va g'ayritabiiy tarzda tugatilgan vazifalar haqida bildirishnomalarni yuborish
Windows Task Scheduler bilan ishlash uchun paketni o'rnatishingiz kerak taskscheduleR, va ma'lumotlar bilan ishlash qulayligi uchun paketni o'rnating dplyr.
Keyinchalik, funktsiyadan foydalaning taskscheduler_ls() biz rejalashtiruvchimizdan vazifalar haqida ma'lumot so'raymiz. Funktsiyadan foydalanish filter() paketdan dplyr Biz vazifalar ro'yxatidan muvaffaqiyatli bajarilgan va oxirgi natija holati 0 bo'lganlarni va hech qachon ishga tushirilmagan va 267011 maqomiga ega bo'lganlarni, o'chirilgan vazifalarni va hozirda ishlayotgan vazifalarni olib tashlaymiz.
Yuqoridagi misolni ishlatganda, kodga bot tokeningiz va chat identifikatoringizni almashtiring.
Siz vazifalarni filtrlash uchun shartlarni qo'shishingiz mumkin, masalan, tizimdan tashqari faqat siz yaratgan vazifalarni tekshirish.
Shuningdek, siz turli xil sozlamalarni alohida konfiguratsiya fayliga qo'yishingiz va unda chat identifikatori va tokenni saqlashingiz mumkin. Konfiguratsiyani, masalan, paketdan foydalanib o'qishingiz mumkin configr.
Jadval bo'yicha skriptlarni ishga tushirishni o'rnatish jarayoni bu erda batafsilroq tasvirlangan maqola. Bu erda men faqat buning uchun bajarilishi kerak bo'lgan qadamlarni tasvirlab beraman. Agar biron bir qadam sizga tushunarsiz bo'lsa, men havola bergan maqolaga qarang.
Faraz qilaylik, biz bot kodimizni faylga saqladik check_bot.R. Ushbu faylni muntazam ishga tushirishni rejalashtirish uchun quyidagi amallarni bajaring:
Path tizimi o'zgaruvchisida R o'rnatilgan papkaga yo'lni yozing; Windowsda yo'l shunday bo'ladi: C:Program FilesRR-4.0.2bin.
Bitta qator bilan bajariladigan bat faylini yarating R CMD BATCH C:rscriptscheck_botcheck_bot.R. O'zgartiring C:rscriptscheck_botcheck_bot.R R faylingizning to'liq yo'liga.
Keyinchalik, ishga tushirish jadvalini o'rnatish uchun Windows Task Scheduler-dan foydalaning, masalan, har yarim soatda.
xulosa
Ushbu maqolada biz qanday qilib bot yaratish va undan telegramda turli bildirishnomalarni yuborish uchun foydalanishni aniqladik.
Men Windows Task Scheduler-ni kuzatish vazifasini tasvirlab berdim, ammo siz ushbu maqoladagi materialdan ob-havo prognozidan tortib birjadagi birja kotirovkalarigacha har qanday bildirishnomalarni yuborish uchun foydalanishingiz mumkin, chunki R sizga juda ko'p ma'lumot manbalariga ulanish imkonini beradi.
Keyingi maqolada biz botga buyruqlar va klaviaturani qanday qo'shishni aniqlaymiz, shunda u nafaqat bildirishnomalarni yuborishi, balki murakkabroq harakatlarni ham bajarishi mumkin.