Abaphulaphuli beTelegram bakhula ngokukhawuleza yonke imihla, oku kuququzelelwa lula lomthunywa, ubukho bamajelo, iingxoxo, kwaye ngokuqinisekileyo ukukwazi ukudala i-bots.
Iibhothi zinokusetyenziselwa iinjongo ezahlukeneyo ngokupheleleyo, ukusuka kunxibelelwano oluzenzekelayo kunye nabathengi bakho ukulawula imisebenzi yakho.
Ngokusisiseko, ungasebenzisa i-telegram ukwenza nayiphi na imisebenzi nge-bot: ukuthumela okanye ukucela idatha, ukuqhuba imisebenzi kumncedisi, ukuqokelela ulwazi kwisiseko sedatha, ukuthumela ii-imeyile, njalo njalo.
Ndiceba ukubhala uluhlu lwamanqaku malunga nendlela yokusebenza kunye
Kweli nqaku lokuqala siza kujonga indlela yokwenza i-telegraph bot kwaye siyisebenzise ukuthumela izaziso kwitelegram.
Ngenxa yoko, siya kuba ne-bot eya kukhangela ubume bokwenziwa kokugqibela kwayo yonke imisebenzi kwi-Windows Task Scheduler, kwaye ikuthumelele izaziso ukuba nayiphi na kuzo ayiphumelelanga.
Kodwa injongo yolu ngcelele lwamanqaku ayikokufundisa indlela yokubhala ibhot yomsebenzi othile, emxinwa, kodwa kukwazisa ngokubanzi kwisintaksi sephakheji. telegram.bot
, kunye nemizekelo yekhowudi onokuthi ubhale ngayo i-bots ukusombulula iingxaki zakho.
Iziqulatho
Ukuba unomdla kuhlalutyo lwedatha, unokuba nomdla kum
Ukwenza ibhot yetelegram Ukufaka iphakheji yokusebenza nge-telegram bot kwi-R Ukuthumela imiyalezo esuka kwi-R ukuya kwiTelegram Ukuseta ishedyuli yokujonga umsebenzi wokuskena isiphelo
Ukwenza ibhot yetelegram
Okokuqala, kufuneka senze i-bot. Oku kwenziwa ngokusebenzisa i-bot ekhethekileyo Ibhotile, Yiya e /start
.
Emva koko uya kufumana umyalezo onoluhlu lwemiyalelo:
Umyalezo ovela kuBotFather
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
Ukwenza ibhot entsha, thumela umyalelo /newbot
.
U-BotFather uyakukucela ukuba ufake igama le-bot kwaye ungene.
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
Ungangenisa naliphi na igama, kodwa igama lokungena kufuneka liphele ngalo bot
.
Ukuba wenze yonke into ngokuchanekileyo, uya kufumana lo myalezo ulandelayo:
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
Okulandelayo uya kufuna ithokheni ye-API efunyenweyo, kumzekelo wam 123456789:abcdefghijklmnopqrstuvwxyz
.
Kweli nyathelo, umsebenzi wokulungiselela wokudala i-bot ugqityiwe.
Ukufaka iphakheji yokusebenza nge-telegram bot kwi-R
Ndicinga ukuba sele unolwimi lwe-R kunye nemekobume yophuhliso lwe-RStudio efakiweyo. Ukuba oku akunjalo, ngoko unokujonga oku
Ukusebenza kunye neTelegram Bot API siya kusebenzisa iphakheji ye-R
Ukufakela iipakethe kwi-R kwenziwa ngokusebenzisa umsebenzi install.packages()
, ke ukufakela iphakheji esiyifunayo, sebenzisa umyalelo install.packages("telegram.bot")
.
Unokufunda ngakumbi malunga nokufaka iipakethe ezahlukeneyo ukusuka
Emva kokufaka ipakethe, kufuneka uyidibanise:
library(telegram.bot)
Ukuthumela imiyalezo esuka kwi-R ukuya kwiTelegram
Ibhot oyenzileyo inokufumaneka kwiTelegram usebenzisa ukungena okuxeliweyo ngexesha lokudalwa, kwimeko yam kunjalo @my_test_bot
.
Thumela ibhot nawuphi na umyalezo, njengokuthi "Hey bot." Okwangoku, siyayidinga le nto ukuze sifumane i-id yencoko yakho ne-bot.
Ngoku sibhala ikhowudi elandelayo kwi-R.
library(telegram.bot)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΠΎΡΠ°
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")
# ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±ΠΎΡΠ΅
print(bot$getMe())
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±ΠΎΡΠ°, Ρ.Π΅. ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ
Π΅ΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
updates <- bot$getUpdates()
# ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°ΡΠ°
# ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π±ΠΎΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
chat_id <- updates[[1L]]$from_chat_id()
Ekuqaleni, senza umzekelo we-bot yethu kunye nomsebenzi Bot()
, ithokheni efunyenwe ngaphambili kufuneka idluliselwe kuyo njengengxabano.
Akuthathwa njengeyona ndlela ilungileyo yokugcina uphawu kwikhowudi, ukuze ukwazi ukuyigcina kwindawo eguquguqukayo kwaye uyifunde kuyo. Ngokungagqibekanga kwiphakheji telegram.bot
Inkxaso yeenguqu zemo engqongileyo zala magama alandelayo iphunyeziwe: R_TELEGRAM_BOT_ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π
. Ngaphandle kwe ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π
endaweni yegama olichazile xa usenza, kwimeko yam iya kuba yinto eguquguqukayo R_TELEGRAM_BOT_My Test Bot
.
Kukho iindlela ezininzi zokwenza ukuguquguquka kwemeko-bume; Ndiza kukuxelela malunga neyona ndawo yonke kunye ne-cross-platform enye. Yenza kulawulo lwakho lwasekhaya (ungalufumana usebenzisa umyalelo path.expand("~")
) ifayile yokubhaliweyo enegama .Renviron. Unokwenza oku usebenzisa umyalelo file.edit(path.expand(file.path("~", ".Renviron")))
.
Kwaye wongeza umgca olandelayo kuyo.
R_TELEGRAM_BOT_ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π=123456789:abcdefghijklmnopqrstuvwxyz
Okulandelayo, ungasebenzisa ithokheni egcinwe kwindawo eguquguqukayo usebenzisa umsebenzi bot_token()
, okt. ndiyayithanda lento:
bot <- Bot(token = bot_token("My Test Bot"))
Indlela getUpdates()
ivumela ukuba sifumane uhlaziyo lwe-bot, okt. imiyalezo ethunyelwe kuye. Indlela from_chat_id()
, ikuvumela ukuba ufumane i-ID yengxoxo apho umyalezo uthunyelwe khona. Sidinga le ID ukuthumela imiyalezo esuka kwibhot.
Ukongeza kwi-id yengxoxo evela kwinto efunyenwe yindlela getUpdates()
ufumana olunye ulwazi oluluncedo. Umzekelo, ulwazi malunga nomsebenzisi othumele umyalezo.
updates[[1L]]$message$from
$id
[1] 000000000
$is_bot
[1] FALSE
$first_name
[1] "Alexey"
$last_name
[1] "Seleznev"
$username
[1] "AlexeySeleznev"
$language_code
[1] "ru"
Ke, ngeli nqanaba sele sinayo yonke into esiyidingayo ukuthumela umyalezo kwi-bot ukuya kwiTelegram. Masisebenzise indlela sendMessage()
, apho kufuneka ugqithise i-ID yengxoxo, umyalezo obhaliweyo, kunye nohlobo lomyalezo obhaliweyo. Uhlobo lophawulo lunokuba yi-Markdown okanye i-HTML kwaye imiselwe yingxabano parse_mode
.
# ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
bot$sendMessage(chat_id,
text = "ΠΡΠΈΠ²Π΅Ρ, *ΠΆΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ* _ΠΊΡΡΡΠΈΠ²_",
parse_mode = "Markdown"
)
Iziseko zokufometha kweMarkdown:
- Ifonti engqindilili iphawulwe nge *:
- Umzekelo:
*ΠΆΠΈΡΠ½ΡΠΉ ΡΡΠΈΡΡ*
- iziphumo: ifonti engqindilili
- Umzekelo:
- Akhekeke abonakaliswe ngoo underscores:
- Umzekelo:
_ΠΊΡΡΡΠΈΠ²_
- iziphumo: akekeleyo
- Umzekelo:
- Ifonti yemonospace, eqhele ukusetyenziselwa ukuqaqambisa ikhowudi yenkqubo, ikhankanyiwe kusetyenziswa izimeli-magama - `:
- umzekelo: `ifonti yesithuba esinye`
- iziphumo:
ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
Iziseko zokufomatha uphawu lweHTML:
Kwi-HTML, usonga inxalenye yokubhaliweyo ekufuneka iphawulwe kwiithegi, umzekelo <ΡΠ΅Π³>ΡΠ΅ΠΊΡΡ</ΡΠ΅Π³>
.
- <ithegi>-ithegi yokuvula
- - ukuvala ithegi
Iithegi zophawulo lwe-HTML
<b>
-ifonti engqindilili- Umzekelo:
<b>ΠΆΠΈΡΠ½ΡΠΉ ΡΡΠΈΡΡ</b>
- siphumo ifonti engqindilili
- Umzekelo:
<i>
- akekeleyo- Umzekelo:
<i>ΠΊΡΡΡΠΈΠ²</i>
- iziphumo: akekeleyo
- Umzekelo:
- β ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
- umzekelo: ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
- iziphumo:
ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
Ukongeza kokubhaliweyo, ungathumela omnye umxholo usebenzisa iindlela ezikhethekileyo:
# ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
bot$sendPhoto(chat_id,
photo = "https://telegram.org/img/t_logo.png"
)
# ΠΡΠΏΡΠ°Π²ΠΊΠ° Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
bot$sendAudio(chat_id,
audio = "http://www.largesound.com/ashborytour/sound/brobob.mp3"
)
# ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ
bot$sendDocument(chat_id,
document = "https://github.com/ebeneditos/telegram.bot/raw/gh-pages/docs/telegram.bot.pdf"
)
# ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΈΠΊΠ΅Ρ
bot$sendSticker(chat_id,
sticker = "https://www.gstatic.com/webp/gallery/1.webp"
)
# ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π²ΠΈΠ΄Π΅ΠΎ
bot$sendVideo(chat_id,
video = "http://techslides.com/demos/sample-videos/small.mp4"
)
# ΠΡΠΏΡΠ°Π²ΠΈΡΡ gif Π°Π½ΠΈΠΌΠ°ΡΠΈΡ
bot$sendAnimation(chat_id,
animation = "https://media.giphy.com/media/sIIhZliB2McAo/giphy.gif"
)
# ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π»ΠΎΠΊΠ°ΡΠΈΡ
bot$sendLocation(chat_id,
latitude = 51.521727,
longitude = -0.117255
)
# ΠΠΌΠΈΡΠ°ΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠ°ΡΠ΅
bot$sendChatAction(chat_id,
action = "typing"
)
Ezo. umzekelo usebenzisa indlela sendPhoto()
Ungathumela igrafu egcinwe njengomfanekiso owenze usebenzisa ipakethe ggplot2
.
Ukujonga i-Windows Task Scheduler kunye nokuthumela izaziso malunga nemisebenzi epheliswe ngokungaqhelekanga.
Ukuze usebenze nge-Windows Task Scheduler kufuneka uyifakele ipakethe taskscheduleR
, kunye nokwenza lula ukusebenza ngedatha, faka ipakethe dplyr
.
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
install.packages(c('taskscheduleR', 'dplyr'))
# ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
library(taskscheduleR)
library(dplyr)
Okulandelayo, usebenzisa umsebenzi taskscheduler_ls()
sicela ulwazi malunga nemisebenzi kumcwangcisi wethu. Ukusebenzisa umsebenzi filter()
ukusuka kwiphakheji dplyr
Sisusa kuluhlu lwemisebenzi leyo yagqitywa ngempumelelo kwaye inesiphumo sokugqibela se-0, kunye nezo zingazange ziqaliswe kwaye zinesimo se-267011, imisebenzi ekhubazekileyo, kunye nemisebenzi esebenzayo ngoku.
# Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ
task <- task <- taskscheduler_ls() %>%
filter(! `Last Result` %in% c("0", "267011") &
`Scheduled Task State` == "Enabled" &
Status != "Running") %>%
select(TaskName) %>%
unique() %>%
unlist() %>%
paste0(., collapse = "n")
Kwinto task
Ngoku sinoluhlu lwemisebenzi engaphumelelanga, kufuneka sithumele olu luhlu kwiTelegram.
Ukuba sijonga umyalelo ngamnye ngokubanzi, ngoko:
filter()
β hluza uluhlu lwemisebenzi ngokwemiqathango echazwe ngasentlaselect()
- ishiya indawo enye kuphela kwitafile enegama lemisebenziunique()
- Susa amagama aphindwe kabiniunlist()
β guqula uluhlu lwetafile olukhethiweyo lube yivekthapaste0()
- idibanisa amagama emisebenzi kumgca omnye, kwaye ibeka umgca wokutya njengomahluli, oko kukuthi.n
.
Konke okuseleyo kuthi kukuthumela esi siphumo ngetelegram.
bot$sendMessage(chat_id,
text = task,
parse_mode = "Markdown"
)
Ke, okwangoku ikhowudi ye-bot ijongeka ngolu hlobo:
Ikhowudi yebhot yokuhlaziya umsebenzi
# ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°
library(telegram.bot)
library(taskscheduleR)
library(dplyr)
# ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π±ΠΎΡΠ°
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")
# ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°ΡΠ°
chat_id <- 123456789
# Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ
task <- taskscheduler_ls() %>%
filter(! `Last Result` %in% c("0", "267011") &
`Scheduled Task State` == "Enabled" &
Status != "Running") %>%
select(TaskName) %>%
unique() %>%
unlist() %>%
paste0(., collapse = "n")
# Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
if ( task != "" ) {
bot$sendMessage(chat_id,
text = task,
parse_mode = "Markdown"
)
}
Xa usebenzisa lo mzekelo ungentla, faka ithokheni yakho yebhot kunye ne-ID yakho yengxoxo kwikhowudi.
Unokongeza iimeko zokucoca imisebenzi, umzekelo, ukujonga kuphela loo misebenzi oyenzileyo, ngaphandle kwenkqubo.
Ungaphinda ubeke izicwangciso ezahlukeneyo kwifayile yoqwalaselo eyahlukileyo, kwaye ugcine i-id yencoko kunye nophawu kuyo. Unokufunda uqwalaselo, umzekelo, usebenzisa ipakethe configr
.
Umzekelo ini config
[telegram_bot]
;Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ° ΠΈ ΡΠ°ΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ
chat_id=12345678
bot_token=123456789:abcdefghijklmnopqrstuvwxyz"
Umzekelo wokufundwa kweenguqu kwi-config kwi-R
library(configr)
# ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ½Π°
config <- read.config('C:/ΠΏΡΡΡ_ΠΊ_ΠΊΠΎΠ½ΡΠΈΠ³Ρ/config.cfg', rcmd.parse = TRUE)
bot_token <- config$telegram_bot$bot_token
chat_id <- config$telegram_bot$chat_id
Ukuseta ishedyuli yokujonga umsebenzi wokuskena
Inkqubo yokumisela ukuqaliswa kweencwadi zeempendulo kwishedyuli ichazwe ngokubanzi kule nto
Masicinge ukuba sigcine ikhowudi yethu yebhot kwifayile check_bot.R
. Ukucwangcisa le fayile ukuba isebenze rhoqo, landela la manyathelo:
- Bhala indlela eya kwisilawulo apho i-R ifakwe khona kwindlela eguquguqukayo yeNdlela; kwi-Windows, umendo uya kuba yinto enje:
C:Program FilesRR-4.0.2bin
. - Yenza ifayile yelulwane ephunyeziweyo ngomgca omnye nje
R CMD BATCH C:rscriptscheck_botcheck_bot.R
. Faka enye indawoC:rscriptscheck_botcheck_bot.R
kumendo opheleleyo kwifayile yakho ye-R. - Okulandelayo, sebenzisa i-Windows Task Scheduler ukuseta ishedyuli yokuqalisa, umzekelo, rhoqo ngesiqingatha seyure.
isiphelo
Kweli nqaku, sifumene indlela yokwenza i-bot kwaye siyisebenzise ukuthumela izaziso ezahlukeneyo kwitelegram.
Ndachaza umsebenzi wokubeka iliso kwi-Windows Task Scheduler, kodwa ungasebenzisa izinto ezikweli nqaku ukuthumela naziphi na izaziso, ukusuka kwimozulu yemozulu ukuya kwiingcaphuno zesitokhwe kwi-stock exchange, kuba R ikuvumela ukuba uqhagamshelane nenani elikhulu lemithombo yedatha.
Kwinqaku elilandelayo, siza kujonga indlela yokongeza imiyalelo kunye nekhibhodi kwi-bot ukuze ingakwazi ukuthumela izaziso kuphela, kodwa yenza izenzo ezinzima ngakumbi.
umthombo: www.habr.com