Sau ib lub telegram bot hauv R (ib ntu 1): Tsim ib lub bot thiab siv nws xa cov lus hauv telegram

Cov neeg tuaj saib Telegram tau loj hlob zuj zus txhua hnub, qhov no tau yooj yim los ntawm kev yooj yim ntawm tus neeg xa xov, muaj cov channel, sib tham, thiab tau kawg lub peev xwm los tsim bots.

Bots tuaj yeem siv rau lub hom phiaj sib txawv kiag li, los ntawm kev sib txuas lus nrog koj cov neeg siv khoom los tswj koj tus kheej cov dej num.

Qhov tseem ceeb, koj tuaj yeem siv telegram los ua ib qho haujlwm los ntawm bot: xa lossis thov cov ntaub ntawv, khiav haujlwm ntawm lub server, sau cov ntaub ntawv rau hauv database, xa email, thiab lwm yam.

Kuv npaj yuav sau ib tsab xov xwm txog kev ua haujlwm nrog Telegram bot API, thiab sau bots kom haum koj cov kev xav tau.

Sau ib lub telegram bot hauv R (ib ntu 1): Tsim ib lub bot thiab siv nws xa cov lus hauv telegram

Hauv thawj kab lus no peb yuav txheeb xyuas yuav ua li cas los tsim ib lub telegram bot thiab siv nws los xa cov ntawv ceeb toom hauv telegram.

Raws li qhov tshwm sim, peb yuav muaj bot uas yuav kuaj xyuas cov xwm txheej kawg ntawm kev ua tiav ntawm txhua txoj haujlwm hauv Windows Task Scheduler, thiab xa cov ntawv ceeb toom rau koj yog tias ib qho ntawm lawv ua tsis tiav.

Tab sis lub hom phiaj ntawm cov kab lus no tsis yog qhia koj yuav ua li cas sau bot rau ib qho tshwj xeeb, nqaim txoj haujlwm, tab sis feem ntau qhia koj txog cov syntax ntawm pob. telegram.bot, thiab code piv txwv uas koj tuaj yeem sau bots los daws koj cov teeb meem.

Txheem

Yog tias koj txaus siab rau cov ntaub ntawv tsom xam, tej zaum koj yuav txaus siab rau kuv telegram ΠΈ youtube cov channel. Cov ntsiab lus feem ntau yog mob siab rau R hom lus.

  1. Tsim ib lub telegram bot
  2. Txhim kho ib pob rau kev ua haujlwm nrog telegram bot hauv R
  3. Xa lus los ntawm R rau Telegram
  4. Teem lub sijhawm rau kev ua haujlwm scans
  5. xaus

Tsim ib lub telegram bot

Ua ntej, peb yuav tsum tsim ib lub bot. Qhov no yog ua tiav siv lub bot tshwj xeeb BotFather, mus txuas thiab sau rau bot /start.

Tom qab ntawd koj yuav tau txais cov lus nrog cov npe ntawm cov lus txib:

Cov lus los ntawm 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

Txhawm rau tsim bot tshiab, xa cov lus txib /newbot.

BotFather yuav hais kom koj nkag mus rau bot lub npe thiab nkag mus.

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

Koj tuaj yeem sau txhua lub npe, tab sis tus ID nkag mus yuav tsum xaus nrog bot.

Yog tias koj ua txhua yam kom raug, koj yuav tau txais cov lus hauv qab no:

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

Tom ntej no koj yuav tsum tau txais API token, hauv kuv qhov piv txwv nws yog 123456789:abcdefghijklmnopqrstuvwxyz.

Hauv cov kauj ruam no, kev npaj ua haujlwm rau kev tsim cov bot tau ua tiav.

Txhim kho ib pob rau kev ua haujlwm nrog telegram bot hauv R

Kuv xav tias koj twb muaj cov lus R thiab RStudio txhim kho ib puag ncig. Yog tias tsis yog qhov no, koj tuaj yeem saib qhov no video tshooj ntawm yuav ua li cas rau nruab lawv.

Txhawm rau ua haujlwm nrog Telegram Bot API peb yuav siv R pob telegram.bot.

Kev txhim kho pob khoom hauv R yog ua tiav siv cov haujlwm install.packages(), yog li txhawm rau nruab lub pob peb xav tau, siv cov lus txib install.packages("telegram.bot").

Koj tuaj yeem kawm paub ntxiv txog kev txhim kho ntau yam pob khoom los ntawm daim video no.

Tom qab txhim kho lub pob, koj yuav tsum txuas nws:

library(telegram.bot)

Xa lus los ntawm R rau Telegram

Lub bot koj tsim tuaj yeem pom hauv Telegram siv tus ID nkag mus thaum tsim, hauv kuv qhov teeb meem nws yog @my_test_bot.

Xa cov bot ib qho lus, xws li "Hav bot." Tam sim no, peb xav tau qhov no txhawm rau kom tau txais tus ID ntawm koj qhov kev sib tham nrog bot.

Tam sim no peb sau cov cai hauv qab no hauv R.

library(telegram.bot)

# создаём экзСмпляр Π±ΠΎΡ‚Π°
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")

# Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π±ΠΎΡ‚Π΅
print(bot$getMe())

# ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ обновлСния Π±ΠΎΡ‚Π°, Ρ‚.Π΅. список ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π΅ΠΌΡƒ сообщСний
updates <- bot$getUpdates()

# Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‡Π°Ρ‚Π°
# ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΠ΅Ρ€Π΅Π΄ запросом ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΡ‚Ρƒ сообщСниС
chat_id <- updates[[1L]]$from_chat_id()

Thaum pib, peb tsim ib qho piv txwv ntawm peb cov bot nrog cov haujlwm Bot(), yav dhau los tau txais token yuav tsum dhau mus rau hauv nws raws li kev sib cav.

Nws tsis yog qhov kev coj ua zoo tshaj plaws los khaws cov token hauv code, yog li koj tuaj yeem khaws nws hauv ib puag ncig hloov pauv thiab nyeem nws los ntawm nws. Los ntawm lub neej ntawd hauv pob telegram.bot Kev them nyiaj yug rau ib puag ncig hloov pauv ntawm cov npe hauv qab no tau ua tiav: R_TELEGRAM_BOT_ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π... Hloov ntawm ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π Hloov lub npe koj teev thaum tsim, hauv kuv rooj plaub nws yuav hloov pauv R_TELEGRAM_BOT_My Test Bot.

Muaj ntau ntau txoj hauv kev los tsim ib qho kev hloov pauv ib puag ncig; Kuv yuav qhia koj txog qhov feem ntau universal thiab cross-platform ib qho. Tsim hauv koj lub tsev directory (koj tuaj yeem pom nws siv cov lus txib path.expand("~")) text file nrog lub npe .Renviron. Koj tuaj yeem ua qhov no los ntawm kev hais kom ua file.edit(path.expand(file.path("~", ".Renviron"))).

Thiab ntxiv cov kab hauv qab no rau nws.

R_TELEGRAM_BOT_ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π=123456789:abcdefghijklmnopqrstuvwxyz

Tom ntej no, koj tuaj yeem siv lub token khaws cia hauv ib puag ncig hloov pauv siv lub luag haujlwm bot_token(), i.e. zoo li no:

bot <- Bot(token = bot_token("My Test Bot"))

Txujci getUpdates()tso cai rau peb kom tau txais bot tshiab, i.e. cov lus uas tau xa tuaj rau nws. Txoj kev from_chat_id(), tso cai rau koj kom tau txais tus ID ntawm kev sib tham los ntawm cov lus xa mus. Peb xav tau tus ID no xa cov lus los ntawm bot.

Ntxiv rau qhov sib tham id los ntawm cov khoom tau los ntawm txoj kev getUpdates() koj kuj tau txais lwm cov ntaub ntawv tseem ceeb. Piv txwv li, cov ntaub ntawv hais txog tus neeg siv uas xa cov lus.

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"

Yog li, nyob rau theem no peb twb muaj txhua yam peb xav tau xa cov lus los ntawm bot mus rau Telegram. Wb siv txoj kev sendMessage(), nyob rau hauv uas koj yuav tsum dhau qhov kev sib tham ID, cov ntawv xov xwm, thiab cov ntawv sau ntawv cim hom. Hom markup tuaj yeem yog Markdown lossis HTML thiab tau teeb tsa los ntawm kev sib cav parse_mode.

# ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния
bot$sendMessage(chat_id,
                text = "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, *ΠΆΠΈΡ€Π½Ρ‹ΠΉ тСкст* _курсив_",
                parse_mode = "Markdown"
)

Markdown formatting hauv paus:

  • Bold font yog highlighted nrog *:
    • piv txwv: *ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ‚Ρ„*
    • tshwm sim: font loj
  • Italics yog qhia los ntawm underscores:
    • piv txwv: _курсив_
    • tshwm sim: italics
  • Lub monospace font, uas feem ntau yog siv los qhia txog qhov program code, tau teev tseg siv apostrophes - `:
    • Piv txwv li: 'monospace font'
    • tshwm sim: ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

Lub hauv paus ntawm formatting HTML markup:
Hauv HTML, koj qhwv ib feem ntawm cov ntawv nyeem uas yuav tsum tau ua kom pom tseeb hauv cov cim npe, piv txwv <Ρ‚Π΅Π³>тСкст</Ρ‚Π΅Π³>.

  • <tag> - qhib tag
  • - kaw tag

HTML markup tags

  • <b> - font loj
    • piv txwv: <b>ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚</b>
    • nyhuv font loj
  • <i> - italics
    • piv txwv: <i>курсив</i>
    • tshwm sim: italics
  • β€” ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚
    • Piv txwv li: ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚
    • tshwm sim: ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

Ntxiv rau cov ntawv nyeem, koj tuaj yeem xa lwm cov ntsiab lus siv cov txheej txheem tshwj xeeb:

# ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
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"
)

Cov. piv txwv li siv txoj kev sendPhoto() koj tuaj yeem xa daim duab khaws cia ua ib daim duab uas koj tsim siv lub pob ggplot2.

Tshawb xyuas Windows Task Scheduler thiab xa cov ntawv ceeb toom txog cov haujlwm uas tau txiav tawm txawv txav

Txhawm rau ua haujlwm nrog Windows Task Scheduler koj yuav tsum tau nruab lub pob taskscheduleR, thiab rau qhov yooj yim ntawm kev ua hauj lwm nrog cov ntaub ntawv, nruab lub pob dplyr.

# Установка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
install.packages(c('taskscheduleR', 'dplyr'))
# ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
library(taskscheduleR)
library(dplyr)

Tom ntej no, siv qhov ua haujlwm taskscheduler_ls() peb thov cov ntaub ntawv hais txog kev ua haujlwm los ntawm peb tus neeg teem sijhawm. Siv lub luag haujlwm filter() los ntawm pob dplyr Peb tshem tawm los ntawm cov npe ntawm cov haujlwm uas tau ua tiav tiav thiab muaj qhov txiaj ntsig kawg ntawm 0, thiab cov uas tsis tau pib ua haujlwm thiab muaj xwm txheej ntawm 267011, kev ua haujlwm xiam oob qhab, thiab cov haujlwm uas tab tom ua haujlwm tam sim no.

# Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ список Π·Π°Π΄Π°Ρ‡
task <- task <- taskscheduler_ls() %>%
        filter(! `Last Result`  %in% c("0", "267011") & 
               `Scheduled Task State` == "Enabled" & 
               Status != "Running") %>%
        select(TaskName) %>%
        unique() %>%
        unlist() %>%
        paste0(., collapse = "n")

Hauv qhov khoom task Tam sim no peb muaj cov npe ntawm cov haujlwm uas ua tsis tiav, peb yuav tsum xa cov npe no mus rau Telegram.

Yog tias peb saib ntawm txhua qhov kev hais kom ntxaws ntxiv, ces:

  • filter() - lim cov npe ntawm cov haujlwm raws li cov xwm txheej tau piav qhia saum toj no
  • select() - tawm tsuas yog ib daim teb hauv lub rooj nrog lub npe ntawm cov haujlwm
  • unique() - tshem tawm cov npe du
  • unlist() - hloov cov kab lus xaiv rau ib vector
  • paste0() - txuas cov npe ntawm cov dej num rau hauv ib kab, thiab muab cov kab noj raws li qhov sib cais, piv txwv li. n.

Txhua yam uas tseem tshuav rau peb yog xa cov txiaj ntsig no ntawm telegram.

bot$sendMessage(chat_id,
                text = task,
                parse_mode = "Markdown"
)

Yog li, thaum lub sijhawm bot code zoo li no:

Task tshuaj xyuas bot code

# ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°
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"
  )

}

Thaum siv cov piv txwv saum toj no, hloov koj lub bot token thiab koj tus ID sib tham rau hauv tus lej.

Koj tuaj yeem ntxiv cov xwm txheej rau kev lim dej, piv txwv li, kuaj xyuas cov haujlwm uas koj tsim, tsis suav nrog cov haujlwm.

Koj tuaj yeem tso ntau qhov chaw rau hauv cov ntaub ntawv sib cais, thiab khaws cov id sib tham thiab token hauv nws. Koj tuaj yeem nyeem cov config, piv txwv li, siv lub pob configr.

Piv txwv li config

[telegram_bot]
;настройки Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ Π±ΠΎΡ‚Π° ΠΈ Ρ‡Π°Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ увСдомлСния
chat_id=12345678
bot_token=123456789:abcdefghijklmnopqrstuvwxyz"

Ib qho piv txwv ntawm kev nyeem cov hloov pauv los ntawm kev teeb tsa hauv 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

Teem lub sijhawm rau kev ua haujlwm scans

Cov txheej txheem ntawm kev teeb tsa cov ntawv sau rau ntawm lub sijhawm tau piav qhia ntau ntxiv hauv qhov no Tshooj. Ntawm no kuv tsuas yog piav qhia txog cov kauj ruam uas yuav tsum tau ua raws li qhov no. Yog tias ib qho ntawm cov kauj ruam tsis meej rau koj, tom qab ntawd xa mus rau kab lus uas kuv tau muab qhov txuas.

Cia peb xav tias peb khaws peb cov bot code rau ib cov ntaub ntawv check_bot.R. Txhawm rau teem caij ua cov ntaub ntawv no tsis tu ncua, ua raws li cov kauj ruam no:

  1. Sau txoj hauv kev rau cov ntawv tais ceev tseg uas R tau teeb tsa hauv Path system hloov pauv; hauv Windows, txoj kev yuav yog qee yam zoo li no: C:Program FilesRR-4.0.2bin.
  2. Tsim cov ntaub ntawv bat uas ua tau nrog ib kab xwb R CMD BATCH C:rscriptscheck_botcheck_bot.R. Hloov C:rscriptscheck_botcheck_bot.R mus rau tag nrho txoj kev mus rau koj cov ntaub ntawv R.
  3. Tom ntej no, siv Windows Task Scheduler los teeb tsa lub sijhawm pib, piv txwv li, txhua ib nrab teev.

xaus

Hauv tsab xov xwm no, peb xav paub yuav ua li cas los tsim ib lub bot thiab siv nws los xa ntau yam kev ceeb toom hauv telegram.

Kuv tau piav qhia txog txoj haujlwm ntawm kev saib xyuas Windows Task Scheduler, tab sis koj tuaj yeem siv cov ntaub ntawv hauv kab lus no los xa cov ntawv ceeb toom, los ntawm huab cua huab cua mus rau cov khoom lag luam hauv Tshuag, vim R tso cai rau koj mus txuas rau ib tug lossis loj tus naj npawb ntawm cov ntaub ntawv qhov chaw.

Hauv tsab xov xwm tom ntej no, peb yuav txheeb xyuas seb yuav ntxiv cov lus txib thiab cov keyboard rau lub bot li cas thiaj li tsis tuaj yeem xa cov ntawv ceeb toom nkaus xwb, tab sis kuj ua haujlwm nyuaj dua.

Tau qhov twg los: www.hab.com

Ntxiv ib saib