ProHoster > Блог > Isakoso > Kikọ bot telegram kan ni R (apakan 1): Ṣiṣẹda bot ati lilo rẹ lati firanṣẹ awọn ifiranṣẹ ni telegram
Kikọ bot telegram kan ni R (apakan 1): Ṣiṣẹda bot ati lilo rẹ lati firanṣẹ awọn ifiranṣẹ ni telegram
Awọn olugbo Telegram n dagba lọpọlọpọ lojoojumọ, eyi ni irọrun nipasẹ irọrun ti ojiṣẹ, wiwa awọn ikanni, awọn iwiregbe, ati dajudaju agbara lati ṣẹda awọn bot.
Bots le ṣee lo fun awọn idi ti o yatọ patapata, lati adaṣe adaṣe pẹlu awọn alabara rẹ si iṣakoso awọn iṣẹ ṣiṣe tirẹ.
Ni pataki, o le lo telegram lati ṣe awọn iṣẹ eyikeyi nipasẹ bot: firanṣẹ tabi beere data, ṣiṣe awọn iṣẹ ṣiṣe lori olupin, gba alaye sinu ibi ipamọ data, firanṣẹ awọn imeeli, ati bẹbẹ lọ.
Mo gbero lati kọ lẹsẹsẹ awọn nkan lori bi a ṣe le ṣiṣẹ pẹlu telegram bot API, ati kọ awọn bot lati ba awọn aini rẹ ṣe.
Ninu nkan akọkọ yii a yoo ro bi o ṣe le ṣẹda bot telegram kan ati lo lati firanṣẹ awọn iwifunni ni telegram.
Bi abajade, a yoo ni bot kan ti yoo ṣayẹwo ipo ti ipaniyan ti o kẹhin ti gbogbo awọn iṣẹ-ṣiṣe ni Iṣeto Iṣẹ-ṣiṣe Windows, ati firanṣẹ awọn iwifunni ti eyikeyi ninu wọn ba kuna.
Ṣugbọn idi ti jara ti awọn nkan kii ṣe lati kọ ọ bi o ṣe le kọ bot fun iṣẹ kan pato, dín, ṣugbọn lati ṣafihan rẹ ni gbogbogbo si sintasi ti package telegram.bot, ati awọn apẹẹrẹ koodu pẹlu eyiti o le kọ awọn bot lati yanju awọn iṣoro tirẹ.
Awọn akoonu
Ti o ba nifẹ si itupalẹ data, o le nifẹ ninu mi telegram и youtube awọn ikanni. Pupọ julọ akoonu jẹ igbẹhin si ede R.
Ni akọkọ, a nilo lati ṣẹda bot kan. Eyi ni a ṣe nipa lilo bot pataki kan Bàbá Bàbá, lọ si ọna asopọ ki o si kọ si bot /start.
Lẹhin eyi iwọ yoo gba ifiranṣẹ kan pẹlu atokọ ti awọn aṣẹ:
Ifiranṣẹ lati 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
Lati ṣẹda bot tuntun, firanṣẹ aṣẹ naa /newbot.
BotFather yoo beere lọwọ rẹ lati tẹ orukọ bot ati buwolu wọle.
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
O le tẹ orukọ eyikeyi sii, ṣugbọn iwọle gbọdọ pari pẹlu bot.
Ti o ba ṣe ohun gbogbo ni deede, iwọ yoo gba ifiranṣẹ atẹle yii:
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
Nigbamii iwọ yoo nilo aami API ti o gba, ninu apẹẹrẹ mi o jẹ 123456789:abcdefghijklmnopqrstuvwxyz.
Ni ipele yii, iṣẹ igbaradi fun ṣiṣẹda bot ti pari.
Fifi package kan fun ṣiṣẹ pẹlu bot telegram ni R
Mo ro pe o ti ni ede R tẹlẹ ati agbegbe idagbasoke RStudio ti fi sori ẹrọ. Ti eyi ko ba jẹ ọran, lẹhinna o le wo eyi Tutorial fidio lori bi o ṣe le fi wọn sii.
Lati ṣiṣẹ pẹlu Telegram Bot API a yoo lo package R telegram.bot.
Fifi awọn idii ni R ṣe ni lilo iṣẹ naa install.packages(), nitorinaa lati fi sori ẹrọ package ti a nilo, lo aṣẹ naa install.packages("telegram.bot").
O le ni imọ siwaju sii nipa fifi sori ẹrọ orisirisi awọn idii lati fidio yi.
Lẹhin fifi package sii, o nilo lati sopọ:
library(telegram.bot)
Fifiranṣẹ awọn ifiranṣẹ lati R si Telegram
Bot ti o ṣẹda ni a le rii ni Telegram ni lilo iwọle ti o ṣalaye lakoko ẹda, ninu ọran mi o jẹ @my_test_bot.
Firanṣẹ bot eyikeyi ifiranṣẹ, gẹgẹbi "Hey bot." Ni akoko yii, a nilo eyi lati le gba id ti iwiregbe rẹ pẹlu bot.
Bayi a kọ koodu atẹle ni R.
library(telegram.bot)
# создаём экземпляр бота
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")
# Запрашиваем информацию о боте
print(bot$getMe())
# Получаем обновления бота, т.е. список отправленных ему сообщений
updates <- bot$getUpdates()
# Запрашиваем идентификатор чата
# Примечание: перед запросом обновлений вы должны отправить боту сообщение
chat_id <- updates[[1L]]$from_chat_id()
Ni ibẹrẹ, a ṣẹda apẹẹrẹ ti bot wa pẹlu iṣẹ naa Bot(), ami ti a ti gba tẹlẹ gbọdọ wa ni gbigbe sinu rẹ gẹgẹbi ariyanjiyan.
Ko ṣe akiyesi iṣe ti o dara julọ lati tọju ami-ami sinu koodu, nitorinaa o le fipamọ sinu oniyipada agbegbe ki o ka lati inu rẹ. Nipa aiyipada ni package telegram.bot Atilẹyin fun awọn oniyipada ayika ti awọn orukọ wọnyi ti ni imuse: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА. Dipo ИМЯ_ВАШЕГО_БОТА paarọ orukọ ti o ṣalaye nigbati o ṣẹda, ninu ọran mi yoo jẹ oniyipada R_TELEGRAM_BOT_My Test Bot.
Awọn ọna pupọ lo wa lati ṣẹda oniyipada ayika; Emi yoo sọ fun ọ nipa gbogbo agbaye julọ ati iru-ọna agbelebu. Ṣẹda ninu ilana ile rẹ (o le rii ni lilo aṣẹ naa path.expand("~")) faili ọrọ pẹlu orukọ .Renviron. O tun le ṣe eyi nipa lilo aṣẹ naa file.edit(path.expand(file.path("~", ".Renviron"))).
Nigbamii, o le lo ami-ami ti o fipamọ ni oniyipada ayika nipa lilo iṣẹ naa bot_token(), i.e. bi eleyi:
bot <- Bot(token = bot_token("My Test Bot"))
Ọna getUpdates()gba wa laaye lati gba awọn imudojuiwọn bot, i.e. awọn ifiranṣẹ ti o ranṣẹ si i. Ọna from_chat_id(), gba ọ laaye lati gba ID ti iwiregbe lati eyiti o ti fi ifiranṣẹ ranṣẹ. A nilo ID yii lati firanṣẹ awọn ifiranṣẹ lati bot.
Ni afikun si id iwiregbe lati ohun ti o gba nipasẹ ọna getUpdates() o tun gba diẹ ninu awọn alaye to wulo miiran. Fun apẹẹrẹ, alaye nipa olumulo ti o fi ifiranṣẹ ranṣẹ.
Nitorinaa, ni ipele yii a ti ni ohun gbogbo ti a nilo lati fi ifiranṣẹ ranṣẹ lati bot kan si Telegram. Jẹ ki a lo ọna naa sendMessage(), sinu eyiti o nilo lati kọja ID iwiregbe, ọrọ ifiranṣẹ, ati iru ifọrọranṣẹ. Iru isamisi le jẹ Markdown tabi HTML ati pe a ṣeto nipasẹ ariyanjiyan parse_mode.
# Отправка сообщения
bot$sendMessage(chat_id,
text = "Привет, *жирный текст* _курсив_",
parse_mode = "Markdown"
)
Awọn ipilẹ ọna kika aami:
Fọọmu alaigboya jẹ afihan pẹlu *:
apẹẹrẹ: *жирный шритф*
abajade: bold font
Awọn italics jẹ itọkasi nipasẹ awọn abẹlẹ:
apẹẹrẹ: _курсив_
abajade: ẹsẹ-iwe
Fonti monospace, eyiti a maa n lo lati ṣe afihan koodu eto, jẹ pato nipa lilo awọn apostrophes - `:
apẹẹrẹ: `monospace font`
abajade: моноширинный шрифт
Awọn ipilẹ ti ọna kika isamisi HTML:
Ni HTML, o fi ipari si apakan ọrọ ti o nilo lati ṣe afihan ni awọn afi, apẹẹrẹ <тег>текст</тег>.
<tag> - tag ṣiṣi
- titi tag
HTML siṣamisi afi
<b> - bold font
apẹẹrẹ: <b>жирный шрифт</b>
ipa bold font
<i> - italics
apẹẹrẹ: <i>курсив</i>
abajade: ẹsẹ-iwe
— моноширинный шрифт
apẹẹrẹ: моноширинный шрифт
abajade: моноширинный шрифт
Ni afikun si ọrọ, o le fi akoonu miiran ranṣẹ nipa lilo awọn ọna pataki:
Awon. fun apẹẹrẹ lilo ọna sendPhoto() o le fi aworan kan ti o fipamọ bi aworan ti o ṣẹda nipa lilo package ggplot2.
Ṣiṣayẹwo Iṣeto Iṣẹ-ṣiṣe Windows ati fifiranṣẹ awọn ifitonileti nipa awọn iṣẹ ṣiṣe ti o ti pari ni aijẹ deede
Lati ṣiṣẹ pẹlu Iṣeto Iṣẹ-ṣiṣe Windows o nilo lati fi sori ẹrọ package naa taskscheduleR, ati fun wewewe ti ṣiṣẹ pẹlu data, fi sori ẹrọ ni package dplyr.
# Установка пакетов
install.packages(c('taskscheduleR', 'dplyr'))
# Подключение пакетов
library(taskscheduleR)
library(dplyr)
Nigbamii, lilo iṣẹ naa taskscheduler_ls() a beere alaye nipa awọn iṣẹ ṣiṣe lati ọdọ oluṣeto wa. Lilo iṣẹ naa filter() lati package dplyr A yọ kuro ninu atokọ awọn iṣẹ ṣiṣe ti o pari ni aṣeyọri ati pe o ni ipo abajade ti o kẹhin ti 0, ati awọn ti ko ṣe ifilọlẹ rara ati pe o ni ipo 267011, awọn iṣẹ alaabo, ati awọn iṣẹ ṣiṣe lọwọlọwọ.
Ilana ti iṣeto ifilọlẹ awọn iwe afọwọkọ lori iṣeto ni a ṣe apejuwe ni awọn alaye diẹ sii ni eyi article. Nibi Emi yoo ṣe apejuwe awọn igbesẹ nikan ti o nilo lati tẹle fun eyi. Ti eyikeyi awọn igbesẹ naa ko ba han ọ, lẹhinna tọka si nkan ti Mo pese ọna asopọ kan si.
Jẹ ki a ro pe a fipamọ koodu bot wa si faili kan check_bot.R. Lati ṣeto faili yii lati ṣiṣẹ nigbagbogbo, tẹle awọn igbesẹ wọnyi:
Kọ ọna si folda ninu eyiti a fi R sori ẹrọ ni iyipada ọna ọna; ni Windows, ọna naa yoo jẹ nkan bii eyi: C:Program FilesRR-4.0.2bin.
Ṣẹda faili adan ti o le ṣiṣẹ pẹlu laini kan R CMD BATCH C:rscriptscheck_botcheck_bot.R. Rọpo C:rscriptscheck_botcheck_bot.R si ọna kikun si faili R rẹ.
Nigbamii, lo Iṣeto Iṣẹ-ṣiṣe Windows lati ṣeto iṣeto ifilọlẹ kan, fun apẹẹrẹ, ni gbogbo idaji wakati.
ipari
Ninu nkan yii, a rii bi o ṣe le ṣẹda bot ati lo lati firanṣẹ awọn iwifunni lọpọlọpọ ni teligram.
Mo ṣe apejuwe iṣẹ-ṣiṣe ti mimojuto Alakoso Iṣẹ-ṣiṣe Windows, ṣugbọn o le lo awọn ohun elo ti o wa ninu nkan yii lati firanṣẹ awọn iwifunni eyikeyi, lati oju ojo oju ojo si awọn idiyele ọja lori paṣipaarọ ọja, nitori R gba ọ laaye lati sopọ si nọmba nla ti awọn orisun data.
Ninu nkan ti o tẹle, a yoo ro bi o ṣe le ṣafikun awọn aṣẹ ati bọtini itẹwe si bot ki o ko le firanṣẹ awọn iwifunni nikan, ṣugbọn tun ṣe awọn iṣe eka diẹ sii.