Izithameli zeTelegram zikhula ngokuqhubekayo nsuku zonke, lokhu kuqhutshwa lula kwesithunywa, ukuba khona kweziteshi, izingxoxo, kanye nekhono lokudala ama-bots.
Amabhothi angasetshenziselwa izinjongo ezihluke ngokuphelele, kusukela ekuxhumaneni okuzenzakalelayo namakhasimende akho kuya ekulawuleni imisebenzi yakho.
Empeleni, ungasebenzisa ithelegramu ukwenza noma yimiphi imisebenzi nge-bot: ukuthumela noma ukucela idatha, qhuba imisebenzi kuseva, uqoqe imininingwane kusizindalwazi, uthumele ama-imeyili, njalo njalo.
Ngihlela ukubhala uchungechunge lwezihloko mayelana nendlela yokusebenzisana
Kulesi sihloko sokuqala sizobona ukuthi singayakha kanjani i-telegraph bot futhi siyisebenzise ukuthumela izaziso ngocingo.
Ngenxa yalokho, sizoba ne-bot ezohlola isimo sokwenziwa kokugcina kwayo yonke imisebenzi ku-Windows Task Scheduler, futhi ikuthumelele izaziso uma enye yazo yehlulekile.
Kodwa inhloso yalolu chungechunge lwezihloko akukhona ukukufundisa ukuthi ungayibhala kanjani i-bot yomsebenzi othile, omncane, kodwa ukukwazisa ngokujwayelekile ku-syntax yephakheji. telegram.bot
, kanye nezibonelo zekhodi ongabhala ngazo ama-bots ukuze uxazulule izinkinga zakho.
Okuqukethwe
Uma uthanda ukuhlaziya idatha, ungase ube nentshisekelo yami
Ukudala i-telegram bot Ukufaka iphakheji yokusebenza nge-telegraph bot ku-R Ithumela imilayezo isuka ku-R iye kuTelegram Ukusetha ishejuli yokusebenzisa ukuskena komsebenzi isiphetho
Ukudala i-telegram bot
Okokuqala, sidinga ukudala i-bot. Lokhu kwenziwa kusetshenziswa i-bot ekhethekile I-BotFather, Iya ku /start
.
Ngemuva kwalokho uzothola umlayezo onohlu lwemiyalo:
Umlayezo ovela ku-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
Ukuze udale i-bot entsha, thumela umyalo /newbot
.
I-BotFather izokucela ukuthi ufake igama le-bot bese ungena ngemvume.
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
Ungafaka noma yiliphi igama, kodwa ukungena ngemvume kufanele kuphele ngokuthi bot
.
Uma wenze konke ngendlela efanele, uzothola umyalezo olandelayo:
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 uzodinga ithokheni ye-API etholiwe, kusibonelo sami 123456789:abcdefghijklmnopqrstuvwxyz
.
Kulesi sinyathelo, umsebenzi wokulungiselela wokudala i-bot usuqediwe.
Ukufaka iphakheji yokusebenza nge-telegraph bot ku-R
Ngicabanga ukuthi usuvele unolimi lwe-R nendawo yokuthuthukisa i-RStudio efakiwe. Uma kungenjalo, ungabheka lokhu
Ukuze sisebenze neTelegram Bot API sizosebenzisa iphakethe le-R
Ukufaka amaphakheji ku-R kwenziwa kusetshenziswa umsebenzi install.packages()
, ngakho-ke ukufaka iphakheji esiyidingayo, sebenzisa umyalo install.packages("telegram.bot")
.
Ungafunda kabanzi mayelana nokufaka amaphakheji ahlukahlukene kusuka
Ngemva kokufaka iphakheji, udinga ukuyixhuma:
library(telegram.bot)
Ithumela imilayezo isuka ku-R iye kuTelegram
I-bot oyidalile ingatholakala kuTelegram usebenzisa ukungena ngemvume okushiwo ngesikhathi sokudala, kimina kunjalo @my_test_bot
.
Thumela i-bot noma yimuphi umlayezo, njengokuthi "Hey bot." Okwamanje, sidinga lokhu ukuze sithole i-id yengxoxo yakho ne-bot.
Manje sibhala ikhodi elandelayo ku-R.
library(telegram.bot)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΠΎΡΠ°
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")
# ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±ΠΎΡΠ΅
print(bot$getMe())
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±ΠΎΡΠ°, Ρ.Π΅. ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ
Π΅ΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
updates <- bot$getUpdates()
# ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°ΡΠ°
# ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π±ΠΎΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
chat_id <- updates[[1L]]$from_chat_id()
Ekuqaleni, sakha isibonelo se-bot yethu ngomsebenzi Bot()
, ithokheni eyamukelwe ngaphambilini kufanele idluliselwe kuyo njengengxabano.
Akubhekwa njengomkhuba ongcono kakhulu ukugcina ithokheni kukhodi, ukuze ukwazi ukuyigcina endaweni eguquguqukayo futhi uyifunde kuyo. Ngokuzenzakalelayo kuphakheji telegram.bot
Ukusekela okuguquguqukayo kwemvelo kwamagama alandelayo kwenziwe: R_TELEGRAM_BOT_ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π
... Esikhundleni se ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π
shintsha igama olicacisile ngenkathi udala, kimi kuzoba okuguquguqukayo R_TELEGRAM_BOT_My Test Bot
.
Kunezindlela ezimbalwa zokwenza imvelo eguquguqukayo; ngizokutshela mayelana nengxenye yonke kanye ne-cross-platform eyodwa. Dala ohlwini lwakho lwasekhaya (ungaluthola usebenzisa umyalo path.expand("~")
) ifayela lombhalo elinegama .Renviron. Ungakwenza futhi lokhu usebenzisa umyalo file.edit(path.expand(file.path("~", ".Renviron")))
.
Bese wengeza umugqa olandelayo kuwo.
R_TELEGRAM_BOT_ΠΠΠ―_ΠΠΠ¨ΠΠΠ_ΠΠΠ’Π=123456789:abcdefghijklmnopqrstuvwxyz
Okulandelayo, ungasebenzisa ithokheni egcinwe endaweni eguquguqukayo usebenzisa umsebenzi bot_token()
, i.e. kanje:
bot <- Bot(token = bot_token("My Test Bot"))
Indlela getUpdates()
kusivumela ukuthi sithole izibuyekezo ze-bot, i.e. imiyalezo eyathunyelwa kuye. Indlela from_chat_id()
, ikuvumela ukuthi uthole i-ID yengxoxo umlayezo othunyelwe kuyo. Sidinga le ID ukuze sithumele imilayezo ukusuka ku-bot.
Ngaphezu kwe-id yengxoxo evela entweni etholwe indlela getUpdates()
uthola nolunye ulwazi oluwusizo. Isibonelo, ulwazi mayelana nomsebenzisi othumele umlayezo.
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"
Ngakho-ke, kulesi sigaba sesivele sinakho konke esikudingayo ukuthumela umlayezo kusuka ku-bot kuya kuTelegram. Masisebenzise indlela sendMessage()
, lapho udinga ukudlulisa khona i-ID yengxoxo, umbhalo womlayezo, kanye nohlobo lombhalo wombhalo. Uhlobo lwemakhaphu kungaba yi-Markdown noma i-HTML futhi lusethwa ukuphikisana parse_mode
.
# ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
bot$sendMessage(chat_id,
text = "ΠΡΠΈΠ²Π΅Ρ, *ΠΆΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ* _ΠΊΡΡΡΠΈΠ²_",
parse_mode = "Markdown"
)
Okuyisisekelo kokufometha kwe-Markdown:
- Ifonti egqamile igqanyiswe ngokuthi *:
- isibonelo:
*ΠΆΠΈΡΠ½ΡΠΉ ΡΡΠΈΡΡ*
- umphumela: ifonti egqamile
- isibonelo:
- Omalukeke baboniswa ngama-underscore:
- isibonelo:
_ΠΊΡΡΡΠΈΠ²_
- umphumela: omalukeke
- isibonelo:
- Ifonti ye-monospace, evame ukusetshenziselwa ukugqamisa ikhodi yohlelo, icaciswa kusetshenziswa ama-aphostrophe - `:
- isibonelo: `ifonti ye-monospace`
- umphumela:
ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
Okuyisisekelo kokufometha kwemakhaphu ye-HTML:
Ku-HTML, ugoqa ingxenye yombhalo odinga ukugqanyiswa kumathegi, isibonelo <ΡΠ΅Π³>ΡΠ΅ΠΊΡΡ</ΡΠ΅Π³>
.
- <tag> - umaka wokuvula
- - umaka wokuvala
Omaka bemakhaphu be-HTML
<b>
- ifonti egqamile- isibonelo:
<b>ΠΆΠΈΡΠ½ΡΠΉ ΡΡΠΈΡΡ</b>
- umphumela ifonti egqamile
- isibonelo:
<i>
- omalukeke- isibonelo:
<i>ΠΊΡΡΡΠΈΠ²</i>
- umphumela: omalukeke
- isibonelo:
- β ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
- isibonelo: ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
- umphumela:
ΠΌΠΎΠ½ΠΎΡΠΈΡΠΈΠ½Π½ΡΠΉ ΡΡΠΈΡΡ
Ngokungeziwe kumbhalo, ungathumela okunye okuqukethwe usebenzisa izindlela ezikhethekile:
# ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
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"
)
Labo. isibonelo usebenzisa indlela sendPhoto()
ungathumela igrafu egcinwe njengesithombe osidalile usebenzisa iphakheji ggplot2
.
Ukuhlola i-Windows Task Scheduler nokuthumela izaziso mayelana nemisebenzi epheliswe ngendlela engavamile
Ukuze usebenze ne-Windows Task Scheduler udinga ukufaka iphakheji taskscheduleR
, futhi ukuze kube lula ukusebenza ngedatha, faka iphakheji dplyr
.
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
install.packages(c('taskscheduleR', 'dplyr'))
# ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
library(taskscheduleR)
library(dplyr)
Okulandelayo, sebenzisa umsebenzi taskscheduler_ls()
sicela ulwazi mayelana nemisebenzi kumhleli wethu. Ukusebenzisa umsebenzi filter()
kusuka kuphakheji dplyr
Sikhipha ohlwini lwemisebenzi leyo eqedwe ngempumelelo futhi enomphumela wokugcina ongu-0, naleyo engakaze yethulwe futhi enesimo sika-267011, imisebenzi ekhubazekile, kanye nemisebenzi esebenzayo njengamanje.
# Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ
task <- task <- taskscheduler_ls() %>%
filter(! `Last Result` %in% c("0", "267011") &
`Scheduled Task State` == "Enabled" &
Status != "Running") %>%
select(TaskName) %>%
unique() %>%
unlist() %>%
paste0(., collapse = "n")
Entweni task
Manje sinohlu lwemisebenzi ehlulekile, sidinga ukuthumela lolu hlu kuTelegram.
Uma sibheka umyalo ngamunye ngemininingwane eyengeziwe, khona-ke:
filter()
β ihlunga uhlu lwemisebenzi ngokwemibandela echazwe ngenhlaselect()
- kushiya inkambu eyodwa kuphela etafuleni enegama lemisebenziunique()
- isusa amagama ayimpindaunlist()
β guqula ikholomu yethebula ekhethiwe ibe ivekhthapaste0()
β uxhuma amagama emisebenzi emugqeni owodwa, bese ebeka umugqa wokuphakelayo njengesihlukanisi, i.e.n
.
Osekusele kithi wukuthumela lo mphumela nge-telegram.
bot$sendMessage(chat_id,
text = task,
parse_mode = "Markdown"
)
Ngakho-ke, okwamanje ikhodi ye-bot ibukeka kanje:
Ikhodi ye-bot yokubuyekeza 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"
)
}
Uma usebenzisa isibonelo esingenhla, faka ithokheni yakho ye-bot kanye ne-ID yakho yengxoxo kukhodi.
Ungengeza izimo zokuhlunga imisebenzi, isibonelo, ukuhlola kuphela leyo misebenzi oyidalile, ngaphandle kweyohlelo.
Ungakwazi futhi ukubeka izilungiselelo ezihlukahlukene efayeleni elihlukile lokumisa, futhi ugcine i-id yengxoxo kanye nethokheni kuyo. Ungafunda ukumisa, isibonelo, usebenzisa iphakheji configr
.
Isibonelo i-config
[telegram_bot]
;Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ° ΠΈ ΡΠ°ΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ
chat_id=12345678
bot_token=123456789:abcdefghijklmnopqrstuvwxyz"
Isibonelo sokufunda okuguquguqukayo kusuka ku-config ku-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
Ukusetha ishejuli yokusebenzisa ukuskena komsebenzi
Inqubo yokumisa ukwethulwa kwemibhalo ohlelweni ichazwe kabanzi kulokhu
Ake sicabange ukuthi silondoloze ikhodi yethu ye-bot efayeleni check_bot.R
. Ukuze uhlele leli fayela ukuthi lisebenze njalo, landela lezi zinyathelo:
- Bhala indlela eya kufolda lapho u-R efakwe khona ku-variable ye-Path system; ku-Windows, indlela izoba into enjengale:
C:Program FilesRR-4.0.2bin
. - Dala ifayela le-bat elisebenzisekayo ngomugqa owodwa nje
R CMD BATCH C:rscriptscheck_botcheck_bot.R
. Faka esikhundleniC:rscriptscheck_botcheck_bot.R
endleleni egcwele yefayela lakho le-R. - Okulandelayo, sebenzisa i-Windows Task Scheduler ukuze usethe uhlelo lokuqalisa, isibonelo, njalo ngesigamu sehora.
isiphetho
Kulesi sihloko, sithole ukuthi singayakha kanjani i-bot futhi siyisebenzise ukuthumela izaziso ezahlukahlukene ngocingo.
Ngichaze umsebenzi wokuqapha i-Windows Task Scheduler, kodwa ungasebenzisa izinto ezikulesi sihloko ukuthumela noma yiziphi izaziso, kusukela kwisibikezelo sezulu kuya kumacaphuno esitoko ku-stock exchange, ngoba R ikuvumela ukuthi uxhume kunombolo enkulu yemithombo yedatha.
Esihlokweni esilandelayo, sizobona indlela yokwengeza imiyalo kanye nekhibhodi ku-bot ukuze ingakwazi ukuthumela izaziso kuphela, kodwa futhi yenza izenzo eziyinkimbinkimbi.
Source: www.habr.com