Sibhala ibhot yetelegram ngolwimi R (icandelo 1): Yenza ibhot kwaye uthumele imiyalezo kwitelegram usebenzisa yona.

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 telegram bot API, kwaye ubhale ii-bots ukuze zihambelane neemfuno zakho.

Sibhala ibhot yetelegram ngolwimi R (icandelo 1): Yenza ibhot kwaye uthumele imiyalezo kwitelegram usebenzisa yona.

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 yilelegram ΠΈ youtube imijelo. Uninzi lomxholo lunikezelwe kulwimi R.

  1. Ukwenza ibhot yetelegram
  2. Ukufaka iphakheji yokusebenza nge-telegram bot kwi-R
  3. Ukuthumela imiyalezo esuka kwi-R ukuya kwiTelegram
  4. Ukuseta ishedyuli yokujonga umsebenzi wokuskena
  5. isiphelo

Ukwenza ibhot yetelegram

Okokuqala, kufuneka senze i-bot. Oku kwenziwa ngokusebenzisa i-bot ekhethekileyo Ibhotile, Yiya e unxibelelwano kwaye ubhalele kwi-bot /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 isifundo sevidiyo ngendlela yokuzifaka.

Ukusebenza kunye neTelegram Bot API siya kusebenzisa iphakheji ye-R telegram.bot.

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 le vidiyo.

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
  • Akhekeke abonakaliswe ngoo underscores:
    • Umzekelo: _курсив_
    • iziphumo: akekeleyo
  • 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
  • <i> - akekeleyo
    • Umzekelo: <i>курсив</i>
    • iziphumo: akekeleyo
  • β€” ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚
    • 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 ngasentla
  • select() - ishiya indawo enye kuphela kwitafile enegama lemisebenzi
  • unique() - Susa amagama aphindwe kabini
  • unlist() β€” guqula uluhlu lwetafile olukhethiweyo lube yivektha
  • paste0() - 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 nqaku. Apha ndiza kuchaza kuphela amanyathelo ekufuneka alandelwe kule nto. Ukuba nawaphi na amanyathelo angacacanga kuwe, ke bhekisa kwinqaku endinikeze ngalo ikhonkco.

Masicinge ukuba sigcine ikhowudi yethu yebhot kwifayile check_bot.R. Ukucwangcisa le fayile ukuba isebenze rhoqo, landela la manyathelo:

  1. 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.
  2. Yenza ifayile yelulwane ephunyeziweyo ngomgca omnye nje R CMD BATCH C:rscriptscheck_botcheck_bot.R. Faka enye indawo C:rscriptscheck_botcheck_bot.R kumendo opheleleyo kwifayile yakho ye-R.
  3. 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

Yongeza izimvo