ProHoster > Blog > Pangangasiwa > Pagsusulat ng telegram bot sa R ββ(bahagi 1): Paglikha ng bot at paggamit nito upang magpadala ng mga mensahe sa telegram
Pagsusulat ng telegram bot sa R ββ(bahagi 1): Paglikha ng bot at paggamit nito upang magpadala ng mga mensahe sa telegram
Ang madla ng Telegram ay lumalaki nang malaki araw-araw, ito ay pinadali ng kaginhawaan ng messenger, ang pagkakaroon ng mga channel, mga chat, at siyempre ang kakayahang lumikha ng mga bot.
Maaaring gamitin ang mga bot para sa ganap na magkakaibang layunin, mula sa pag-automate ng mga komunikasyon sa iyong mga customer hanggang sa pamamahala ng sarili mong mga gawain.
Sa pangkalahatan, maaari mong gamitin ang telegram upang magsagawa ng anumang mga operasyon sa pamamagitan ng bot: magpadala o humiling ng data, magpatakbo ng mga gawain sa server, mangolekta ng impormasyon sa isang database, magpadala ng mga email, at iba pa.
Plano kong magsulat ng isang serye ng mga artikulo kung paano magtrabaho kasama telegram bot API, at sumulat ng mga bot upang umangkop sa iyong mga pangangailangan.
Sa unang artikulong ito, malalaman natin kung paano lumikha ng isang telegram bot at gamitin ito upang magpadala ng mga abiso sa telegrama.
Bilang resulta, magkakaroon kami ng bot na susuri sa katayuan ng huling pagpapatupad ng lahat ng gawain sa Windows Task Scheduler, at magpapadala sa iyo ng mga abiso kung nabigo ang alinman sa mga ito.
Ngunit ang layunin ng seryeng ito ng mga artikulo ay hindi upang turuan ka kung paano magsulat ng isang bot para sa isang tiyak, makitid na gawain, ngunit sa pangkalahatan ay ipakilala sa iyo ang syntax ng package telegram.bot, at mga halimbawa ng code kung saan maaari kang sumulat ng mga bot upang malutas ang iyong sariling mga problema.
nilalaman
Kung interesado ka sa pagsusuri ng data, maaaring interesado ka sa aking telegram ΠΈ youtube mga channel. Karamihan sa nilalaman ay nakatuon sa wikang R.
Una, kailangan nating gumawa ng bot. Ginagawa ito gamit ang isang espesyal na bot BotAma, pumunta sa link at sumulat sa bot /start.
Pagkatapos nito makakatanggap ka ng isang mensahe na may isang listahan ng mga utos:
Mensahe mula sa BotFather
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
Para gumawa ng bagong bot, ipadala ang command /newbot.
Hihilingin sa iyo ng BotFather na ipasok ang pangalan ng bot at mag-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
Maaari kang magpasok ng anumang pangalan, ngunit ang pag-login ay dapat magtapos sa bot.
Kung ginawa mo nang tama ang lahat, matatanggap mo ang sumusunod na mensahe:
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
Susunod na kakailanganin mo ang natanggap na token ng API, sa aking halimbawa ito ay 123456789:abcdefghijklmnopqrstuvwxyz.
Sa hakbang na ito, nakumpleto ang paghahanda sa paggawa ng bot.
Pag-install ng isang pakete para sa pagtatrabaho sa isang telegram bot sa R
Ipinapalagay ko na mayroon ka nang naka-install na wikang R at ang kapaligiran ng pag-unlad ng RStudio. Kung hindi ito ang kaso, maaari mong tingnan ito aralin sa video sa kung paano i-install ang mga ito.
Upang gumana sa Telegram Bot API gagamitin namin ang R package telegram.bot.
Ang pag-install ng mga pakete sa R ββay ginagawa gamit ang function install.packages(), kaya para mai-install ang package na kailangan namin, gamitin ang command install.packages("telegram.bot").
Maaari kang matuto nang higit pa tungkol sa pag-install ng iba't ibang mga pakete mula sa ang video na ito.
Pagkatapos i-install ang package, kailangan mong ikonekta ito:
library(telegram.bot)
Nagpapadala ng mga mensahe mula sa R ββhanggang Telegram
Ang bot na iyong nilikha ay matatagpuan sa Telegram gamit ang pag-login na tinukoy sa panahon ng paglikha, sa aking kaso ito ay @my_test_bot.
Ipadala sa bot ang anumang mensahe, gaya ng "Hey bot." Sa ngayon, kailangan namin ito para makuha ang id ng iyong chat sa bot.
Ngayon isinusulat namin ang sumusunod na code sa R.
Sa una, gumawa kami ng isang instance ng aming bot na may function Bot(), ang dating natanggap na token ay dapat ipasa dito bilang argumento.
Hindi itinuturing na pinakamahusay na kasanayan ang pag-imbak ng token sa code, upang maiimbak mo ito sa isang variable ng kapaligiran at basahin ito mula dito. Bilang default sa package telegram.bot Naipatupad ang suporta para sa mga variable ng kapaligiran ng mga sumusunod na pangalan: R_TELEGRAM_BOT_ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π... sa halip na ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π palitan ang pangalan na iyong tinukoy noong lumilikha, sa aking kaso ito ay magiging isang variable R_TELEGRAM_BOT_My Test Bot.
Mayroong ilang mga paraan upang lumikha ng isang variable ng kapaligiran; Sasabihin ko sa iyo ang tungkol sa pinaka-unibersal at cross-platform. Lumikha sa iyong home directory (makikita mo ito gamit ang command path.expand("~")) text file na may pangalan .Renviron. Magagawa mo rin ito gamit ang command file.edit(path.expand(file.path("~", ".Renviron"))).
Susunod, maaari mong gamitin ang token na naka-save sa environment variable gamit ang function bot_token(), ibig sabihin. ganito:
bot <- Bot(token = bot_token("My Test Bot"))
pamamaraan getUpdates()nagbibigay-daan sa amin na makakuha ng mga update sa bot, ibig sabihin. mga mensaheng ipinadala sa kanya. Pamamaraan from_chat_id(), ay nagbibigay-daan sa iyong makuha ang ID ng chat kung saan ipinadala ang mensahe. Kailangan namin ang ID na ito upang magpadala ng mga mensahe mula sa bot.
Bilang karagdagan sa chat id mula sa bagay na nakuha ng pamamaraan getUpdates() makakatanggap ka rin ng ilang iba pang kapaki-pakinabang na impormasyon. Halimbawa, impormasyon tungkol sa user na nagpadala ng mensahe.
Kaya, sa yugtong ito mayroon na kami ng lahat ng kailangan namin upang magpadala ng mensahe mula sa isang bot patungo sa Telegram. Gamitin natin ang pamamaraan sendMessage(), kung saan kailangan mong ipasa ang chat ID, message text, at message text markup type. Ang uri ng markup ay maaaring Markdown o HTML at itinakda ng argumento parse_mode.
Mga pangunahing kaalaman sa pag-format ng markdown:
Ang naka-bold na font ay naka-highlight sa *:
Halimbawa: *ΠΆΠΈΡΠ½ΡΠΉ ΡΡΠΈΡΡ*
resulta: naka-bold na font
Ang mga Italic ay ipinahiwatig ng mga salungguhit:
Halimbawa: _ΠΊΡΡΡΠΈΠ²_
resulta: italics
Ang monospace na font, na karaniwang ginagamit upang i-highlight ang code ng programa, ay tinukoy gamit ang mga kudlit - `:
halimbawa: `monospace font`
resulta: ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
Mga pangunahing kaalaman sa pag-format ng HTML markup:
Sa HTML, binabalot mo ang bahagi ng teksto na kailangang i-highlight sa mga tag, halimbawa <ΡΠ΅Π³>ΡΠ΅ΠΊΡΡ</ΡΠ΅Π³>.
<tag> - pambungad na tag
- closing tag
Mga HTML markup tag
<b> - naka-bold na font
Halimbawa: <b>ΠΆΠΈΡΠ½ΡΠΉ ΡΡΠΈΡΡ</b>
magbunga naka-bold na font
<i> - italics
Halimbawa: <i>ΠΊΡΡΡΠΈΠ²</i>
resulta: italics
β ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
halimbawa: ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
resulta: ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
Bilang karagdagan sa teksto, maaari kang magpadala ng iba pang nilalaman gamit ang mga espesyal na pamamaraan:
Yung. halimbawa gamit ang pamamaraan sendPhoto() maaari kang magpadala ng isang graph na na-save bilang isang imahe na iyong nilikha gamit ang package ggplot2.
Sinusuri ang Windows Task Scheduler at pagpapadala ng mga abiso tungkol sa mga gawain na hindi normal na natapos
Upang gumana sa Windows Task Scheduler kailangan mong i-install ang package taskscheduleR, at para sa kaginhawaan ng pagtatrabaho sa data, i-install ang package dplyr.
Susunod, gamit ang function taskscheduler_ls() humihiling kami ng impormasyon tungkol sa mga gawain mula sa aming scheduler. Gamit ang function filter() mula sa pakete dplyr Aalisin namin mula sa listahan ng mga gawain ang mga matagumpay na nakumpleto at may huling katayuan ng resulta na 0, at ang mga hindi pa nailunsad at may status na 267011, mga naka-disable na gawain, at mga gawain na kasalukuyang tumatakbo.
Kapag ginagamit ang halimbawa sa itaas, palitan ang iyong bot token at ang iyong chat ID sa code.
Maaari kang magdagdag ng mga kundisyon para sa pag-filter ng mga gawain, halimbawa, pagsuri lamang sa mga gawaing ginawa mo, hindi kasama ang mga gawain ng system.
Maaari ka ring maglagay ng iba't ibang setting sa isang hiwalay na configuration file, at iimbak dito ang chat id at token. Maaari mong basahin ang config, halimbawa, gamit ang package configr.
Pagse-set up ng iskedyul para sa pagpapatakbo ng mga pag-scan ng gawain
Ang proseso ng pag-set up ng paglulunsad ng mga script sa isang iskedyul ay inilalarawan nang mas detalyado dito Artikulo. Dito ko lang ilalarawan ang mga hakbang na kailangang sundin para dito. Kung ang alinman sa mga hakbang ay hindi malinaw sa iyo, pagkatapos ay sumangguni sa artikulo kung saan ako nagbigay ng isang link.
Ipagpalagay natin na na-save namin ang aming bot code sa isang file check_bot.R. Upang iiskedyul ang file na ito na tumakbo nang regular, sundin ang mga hakbang na ito:
Isulat ang path sa folder kung saan naka-install ang R sa Path system variable; sa Windows, ang path ay magiging ganito: C:Program FilesRR-4.0.2bin.
Gumawa ng executable bat file na may isang linya lang R CMD BATCH C:rscriptscheck_botcheck_bot.R. Palitan C:rscriptscheck_botcheck_bot.R sa buong landas sa iyong R file.
Susunod, gamitin ang Windows Task Scheduler upang mag-set up ng iskedyul ng paglulunsad, halimbawa, bawat kalahating oras.
Konklusyon
Sa artikulong ito, nalaman namin kung paano lumikha ng isang bot at gamitin ito upang magpadala ng iba't ibang mga abiso sa telegrama.
Inilarawan ko ang gawain ng pagsubaybay sa Windows Task Scheduler, ngunit maaari mong gamitin ang materyal sa artikulong ito upang magpadala ng anumang mga abiso, mula sa taya ng panahon hanggang sa mga stock quote sa stock exchange, dahil Pinapayagan ka ng R na kumonekta sa isang malaking bilang ng mga mapagkukunan ng data.
Sa susunod na artikulo, malalaman natin kung paano magdagdag ng mga utos at keyboard sa bot upang hindi lamang ito makapagpadala ng mga abiso, ngunit magsagawa rin ng mas kumplikadong mga aksyon.