αž™αžΎαž„αžŸαžšαžŸαŸαžš Telegram bot αž‡αžΆαž—αžΆαžŸαžΆ R (αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 1)αŸ– αž”αž„αŸ’αž€αžΎαž bot αž αžΎαž™αž•αŸ’αž‰αžΎαžŸαžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹ telegram αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαžΆ

αž‘αžŸαŸ’αžŸαž“αž·αž€αž‡αž“ Telegram αž€αŸ†αž–αž»αž„αžαŸ‚αž€αžΎαž“αž‘αžΎαž„αž‡αžΆαž›αŸ†αžŠαžΆαž”αŸ‹αž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αžαŸ’αž„αŸƒ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αžŠαŸ„αž™αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž’αŸ’αž“αž€αž“αžΆαŸ†αžŸαžΆαžš αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹αž”αŸ‰αž»αžŸαŸ’αžαž·αŸ αž€αžΆαžšαž‡αž‡αŸ‚αž€ αž“αž·αž„αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžšαžΌαž”αž™αž“αŸ’αžαŸ”

Bots αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžΎβ€‹αž€αŸ’αž“αž»αž„β€‹αž‚αŸ„αž›β€‹αž”αŸ†αžŽαž„β€‹αžαž»αžŸβ€‹αž‚αŸ’αž“αžΆβ€‹αž‘αžΆαŸ†αž„β€‹αžŸαŸ’αžšαž»αž„ αž…αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αž€αžΆαžšβ€‹αž‘αŸ†αž“αžΆαž€αŸ‹β€‹αž‘αŸ†αž“αž„β€‹αžŠαŸ„αž™β€‹αžŸαŸ’αžœαŸαž™β€‹αž”αŸ’αžšαžœαžαŸ’αžαž·β€‹αž‡αžΆαž˜αž½αž™β€‹αž’αžαž·αžαž·αž‡αž“β€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€β€‹αž‘αŸ…β€‹αž€αžΆαžšβ€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž‚αŸ’αžšαž„β€‹αž€αž·αž…αŸ’αž…αž€αžΆαžšβ€‹αž•αŸ’αž‘αžΆαž›αŸ‹β€‹αžαŸ’αž›αž½αž“β€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€αŸ”

αžŸαŸ†αžαžΆαž“αŸ‹ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαžαŸαž‘αŸαž€αŸ’αžšαžΆαž˜ αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŽαžΆαž˜αž½αž™αžαžΆαž˜αžšαž™αŸˆ botαŸ– αž•αŸ’αž‰αžΎ αž¬αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž·αž…αŸ’αž…αž€αžΆαžšαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž”αŸ’αžšαž˜αžΌαž›αž–αŸαžαŸŒαž˜αžΆαž“αž‘αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž•αŸ’αž‰αžΎαž’αŸŠαžΈαž˜αŸ‚αž›αž‡αžΆαžŠαžΎαž˜αŸ”

αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž‚αž˜αŸ’αžšαŸ„αž„αžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Telegram bot APIαž“αž·αž„αžŸαžšαžŸαŸαžš bots αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž–αŸαž‰αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž™αžΎαž„αžŸαžšαžŸαŸαžš Telegram bot αž‡αžΆαž—αžΆαžŸαžΆ R (αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 1)αŸ– αž”αž„αŸ’αž€αžΎαž bot αž αžΎαž™αž•αŸ’αž‰αžΎαžŸαžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹ telegram αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαžΆ

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αžŠαŸ†αž”αžΌαž„αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαž Telegram bot αž αžΎαž™αž”αŸ’αžšαžΎαžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‰αžΎαž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αž‡αžΆαž‘αžΌαžšαž›αŸαžαŸ”

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž™αžΎαž„αž“αžΉαž„αž˜αžΆαž“ bot αžŠαŸ‚αž›αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Windows Task Scheduler αž αžΎαž™αž•αŸ’αž‰αžΎαž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αž‘αŸ…αž’αŸ’αž“αž€ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αž½αž€αž‚αŸαž”αžšαžΆαž‡αŸαž™αŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‚αŸ„αž›αž”αŸ†αžŽαž„αž“αŸƒαž’αžαŸ’αžαž”αž‘αžŸαŸŠαŸαžšαžΈαž“αŸαŸ‡αž‚αžΊαž˜αž·αž“αž˜αŸ‚αž“αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αžšαŸ€αž“αž’αŸ’αž“αž€αž–αžΈαžšαž”αŸ€αž”αžŸαžšαžŸαŸαžš bot αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαžαžΌαž…αž…αž„αŸ’αž’αŸ€αžαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž‘αžΌαž‘αŸ…αžŽαŸ‚αž“αžΆαŸ†αž’αŸ’αž“αž€αž’αŸ†αž–αžΈαžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒαž€αž‰αŸ’αž…αž”αŸ‹αŸ” telegram.botαž“αž·αž„αž§αž‘αžΆαž αžšαžŽαŸαž€αžΌαžŠαžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžŸαžšαžŸαŸαžš bots αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž˜αžΆαžαž·αž€αžΆ

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž›αžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž’αŸ’αž“αž€αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž›αžΎαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž‘αžΌαžšαž›αŸαž ΠΈ YouTube αž†αžΆαž“αŸ‚αž›αŸ” αž˜αžΆαžαž·αž€αžΆαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž§αž‘αŸ’αž‘αž·αžŸαžŠαž›αŸ‹αž—αžΆαžŸαžΆ R αŸ”

  1. αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž Telegram bot
  2. αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ telegram bot αž“αŸ…αž€αŸ’αž“αž»αž„ R
  3. αž€αžΆαžšαž•αŸ’αž‰αžΎαžŸαžΆαžšαž–αžΈ R αž‘αŸ… Telegram
  4. αžšαŸ€αž”αž…αŸ†αž€αžΆαž›αžœαž·αž—αžΆαž‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž€αŸαž“αž€αž·αž…αŸ’αž…αž€αžΆαžš
  5. αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž Telegram bot

αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαž bot αŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž”αŸ’αžšαžΎ bot αž–αž·αžŸαŸαžŸ αž”αžΌαž αŸ’αžœαž αŸ’αžœαž, αž‘αŸ… αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹ αž αžΎαž™αžŸαžšαžŸαŸαžšαž‘αŸ… bot /start.

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡ αž’αŸ’αž“αž€αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž”αž‰αŸ’αž‡αžΈαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ–

αžŸαžΆαžšαž–αžΈ 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

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž bot αžαŸ’αž˜αžΈ αžŸαžΌαž˜αž•αŸ’αž‰αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ /newbot.

BotFather αž“αžΉαž„αžŸαž½αžšαž’αŸ’αž“αž€αž±αŸ’αž™αž”αž‰αŸ’αž…αžΌαž›αžˆαŸ’αž˜αŸ„αŸ‡ αž“αž·αž„αž…αžΌαž›αžšαž”αžŸαŸ‹ bot αŸ”

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

αž’αŸ’αž“αž€αž’αžΆαž…αž”αž‰αŸ’αž…αžΌαž›αžˆαŸ’αž˜αŸ„αŸ‡αžŽαžΆαž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž…αžΌαž›αžαŸ’αžšαžΌαžœαžαŸ‚αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™ bot.

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αžΆαž“αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž’αŸ’αž“αž€αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αžŸαžΆαžšαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

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

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆ API αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžœαžΆαž‚αžΊαž‡αžΆ 123456789:abcdefghijklmnopqrstuvwxyz.

αž“αŸ…αž‡αŸ†αž αžΆαž“αž“αŸαŸ‡ αž€αžΆαžšαž„αžΆαžšαžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαž bot αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ telegram bot αž“αŸ…αž€αŸ’αž“αž»αž„ R

αžαŸ’αž‰αž»αŸ†αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž’αŸ’αž“αž€αž˜αžΆαž“αž—αžΆαžŸαžΆ R αž“αž·αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ RStudio αžšαž½αž…αž αžΎαž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžšαžŽαžΈαž‘αŸαž“αŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžšαžΏαž„αž“αŸαŸ‡ αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“αžœαžΈαžŠαŸαž’αžΌ αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ†αž‘αžΎαž„αž–αž½αž€αžœαžΆαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Telegram Bot API αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž€αž‰αŸ’αž…αž”αŸ‹ R telegram.bot.

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ R αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžš install.packages()αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš αžŸαžΌαž˜αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ install.packages("telegram.bot").

αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹αž•αŸ’αžŸαŸαž„αŸ—αž–αžΈ αžœαžΈαžŠαŸαž’αžΌαž“αŸαŸ‡αŸ”.

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž—αŸ’αž‡αžΆαž”αŸ‹αžœαžΆαŸ–

library(telegram.bot)

αž€αžΆαžšαž•αŸ’αž‰αžΎαžŸαžΆαžšαž–αžΈ R αž‘αŸ… Telegram

bot αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„ Telegram αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž…αžΌαž›αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αž„αŸ’αž€αžΎαž αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžœαžΆαž‚αžΊαž‡αžΆ @my_test_bot.

αž•αŸ’αž‰αžΎ bot αžŸαžΆαžšαžŽαžΆαž˜αž½αž™αžŠαžΌαž…αž‡αžΆ "Hey bot" αŸ” αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžœαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸƒαž€αžΆαžšαž‡αž‡αŸ‚αž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‡αžΆαž˜αž½αž™αž”αžΌαžαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αžŸαžšαžŸαŸαžšαž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸ…αž€αŸ’αž“αž»αž„ R.

library(telegram.bot)

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

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

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

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

αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒ bot αžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž˜αž»αžαž„αžΆαžš Bot()αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŠαŸ‚αž›αž”αžΆαž“αž‘αž‘αž½αž›αž–αžΈαž˜αž»αž“αžαŸ’αžšαžΌαžœαžαŸ‚αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž‡αžΆαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αŸ”

αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αŸ’αž’αž”αŸ†αž•αž»αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž“αŸ„αŸ‡αž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž› αž αžΎαž™αž’αžΆαž“αžœαžΆαž–αžΈαžœαžΆαŸ” αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž‰αŸ’αž…αž”αŸ‹ telegram.bot αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αž“αŸƒαžˆαŸ’αž˜αŸ„αŸ‡αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ– R_TELEGRAM_BOT_ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π. αž‡αŸ†αž“αž½αžŸβ€‹αž’αŸ„αž™ ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π αž‡αŸ†αž“αž½αžŸαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαž αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžœαžΆαž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆαž’αžαŸαžš R_TELEGRAM_BOT_My Test Bot.

αž˜αžΆαž“αžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αŸ†αž–αžΈαžŸαž€αž›αž”αŸ†αž•αž»αž αž“αž·αž„αž†αŸ’αž›αž„αžœαŸαž‘αž·αž€αžΆαž˜αž½αž™αŸ” αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž•αŸ’αž‘αŸ‡αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ (αž’αŸ’αž“αž€αž’αžΆαž…αžšαž€αžœαžΆαž”αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ path.expand("~")) αž―αž€αžŸαžΆαžšαž’αžαŸ’αžαž”αž‘αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡ .αžšαŸ‰αŸαž“αžœαžΈαžšαŸ‰αž»αž“. αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ file.edit(path.expand(file.path("~", ".Renviron"))).

αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜αž”αž“αŸ’αž‘αžΆαžαŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž‘αŸ…αžœαžΆαŸ”

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

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαžŸαž‰αŸ’αž‰αžΆαžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžš bot_token(), i.e. αžŠαžΌαž…αž“αŸαŸ‡αŸ–

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

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž getUpdates()αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž– bot αž–αŸ„αž›αž‚αžΊαž§αŸ” αžŸαžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαž‘αŸ…αž‚αžΆαžαŸ‹αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž from_chat_id()αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸƒαž€αžΆαžšαž‡αž‡αŸ‚αž€αžŠαŸ‚αž›αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‰αžΎαžŸαžΆαžšαž–αžΈαž”αžΌαžαŸ”

αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž€αžΆαžšαž‡αž‡αŸ‚αž€αž–αžΈαžœαžαŸ’αžαž»αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αžŠαŸ„αž™αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš getUpdates() αž’αŸ’αž“αž€αž€αŸαž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αŸ€αžαž•αž„αžŠαŸ‚αžšαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αž‰αžΎαžŸαžΆαžšαŸ”

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"

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸαŸ‡ αž™αžΎαž„αž˜αžΆαž“αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž•αŸ’αž‰αžΎαžŸαžΆαžšαž–αžΈ bot αž‘αŸ…αž€αžΆαž“αŸ‹ Telegram αŸ” αž…αžΌαžšαž™αžΎαž„αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž sendMessage()αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž€αžΆαžšαž‡αž‡αŸ‚αž€ αž’αžαŸ’αžαž”αž‘αžŸαžΆαžš αž“αž·αž„αž”αŸ’αžšαž—αŸαž‘αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž’αžαŸ’αžαž”αž‘αžŸαžΆαžšαŸ” αž”αŸ’αžšαž—αŸαž‘αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž’αžΆαž…αž‡αžΆ Markdown ឬ HTML αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ parse_mode.

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

αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‚αŸ’αžšαžΉαŸ‡αž“αŸƒαž‘αž˜αŸ’αžšαž„αŸ‹ MarkdownαŸ–

  • αž–αž»αž˜αŸ’αž–αž’αž€αŸ’αžŸαžšαžŠαž·αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αž›αž·αž…αžŠαŸ„αž™ *αŸ–
    • αž§αž‘αžΆαž αžšαžŽαŸ: *ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ‚Ρ„*
    • αž›αž‘αŸ’αž’αž•αž›αŸ– αž–αž»αž˜αŸ’αž–αž’αž€αŸ’αžŸαžšαžŠαž·αž
  • αž‘αŸ’αžšαŸαžβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž αžΆαž‰β€‹αžŠαŸ„αž™β€‹αžŸαž‰αŸ’αž‰αžΆβ€‹αž‚αžΌαžŸβ€‹αž€αŸ’αžšαŸ„αž˜αŸ–
    • αž§αž‘αžΆαž αžšαžŽαŸ: _курсив_
    • αž›αž‘αŸ’αž’αž•αž›αŸ– αž‘αŸ’αžšαŸαž
  • αž–αž»αž˜αŸ’αž–αž’αž€αŸ’αžŸαžš monospace αžŠαŸ‚αž›αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αž›αž·αž…αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎ apostrophes - `:
    • αž§αž‘αžΆαž αžšαžŽαŸαŸ– `αž–αž»αž˜αŸ’αž–αž’αž€αŸ’αžŸαžš monospace`
    • αž›αž‘αŸ’αž’αž•αž›αŸ– ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‚αŸ’αžšαžΉαŸ‡αž“αŸƒαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™ HTML markupαŸ–
αž€αŸ’αž“αž»αž„ HTML αž’αŸ’αž“αž€β€‹αžšαž»αŸ†β€‹αž•αŸ’αž“αŸ‚αž€β€‹αž“αŸƒβ€‹αž’αžαŸ’αžαž”αž‘β€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αž“αŸ’αž›αž·αž…β€‹αž€αŸ’αž“αž»αž„β€‹αžŸαŸ’αž›αžΆαž€ αž§αž‘αžΆαž αžšαžŽαŸ <Ρ‚Π΅Π³>тСкст</Ρ‚Π΅Π³>.

  • <tag> - αžŸαŸ’αž›αžΆαž€αž”αžΎαž€
  • - αžŸαŸ’αž›αžΆαž€αž”αž·αž‘

αžŸαŸ’αž›αžΆαž€αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹ HTML

  • <b> - αž–αž»αž˜αŸ’αž–αž’αž€αŸ’αžŸαžšαžŠαž·αž
    • αž§αž‘αžΆαž αžšαžŽαŸ: <b>ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚</b>
    • αž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹ αž–αž»αž˜αŸ’αž–αž’αž€αŸ’αžŸαžšαžŠαž·αž
  • <i> - αž‘αŸ’αžšαŸαž
    • αž§αž‘αžΆαž αžšαžŽαŸ: <i>курсив</i>
    • αž›αž‘αŸ’αž’αž•αž›αŸ– αž‘αŸ’αžšαŸαž
  • β€” ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚
    • αž§αž‘αžΆαž αžšαžŽαŸαŸ– ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚
    • αž›αž‘αŸ’αž’αž•αž›αŸ– ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž’αžαŸ’αžαž”αž‘ αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž‰αžΎαžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž–αž·αžŸαŸαžŸαŸ–

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

αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš sendPhoto() αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž‰αžΎαž€αŸ’αžšαžΆαž αŸ’αžœαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‡αžΆαžšαžΌαž”αž—αžΆαž–αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž‰αŸ’αž…αž”αŸ‹ ggplot2.

αž–αž·αž“αž·αžαŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž—αžΆαžšαž€αž·αž…αŸ’αž…αžšαž”αžŸαŸ‹αžœαžΈαž“αžŠαžΌ αž“αž·αž„αž•αŸ’αž‰αžΎαž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αž’αŸ†αž–αžΈαž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž·αž‘αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαž»αžŸαž”αŸ’αžšαž€αŸ’αžšαžαžΈ

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Windows Task Scheduler αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹ taskscheduleRαž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŸαžΌαž˜αžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹ dplyr.

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

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžš taskscheduler_ls() αž™αžΎαž„αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αž·αž…αŸ’αž…αž€αžΆαžšαž–αžΈαž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž»αžαž„αžΆαžš filter() αž–αžΈαž€αž‰αŸ’αž…αž”αŸ‹ dplyr αž™αžΎαž„αžŠαž€αž…αŸαž‰αž–αžΈαž”αž‰αŸ’αž‡αžΈαž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™ αž“αž·αž„αž˜αžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž›αž‘αŸ’αž’αž•αž›αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒ 0 αž αžΎαž™αž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸ‚αž›αž˜αž·αž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž˜αžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž– 267011 αž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸ‚αž›αž”αž·αž‘ αž“αž·αž„αž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ”

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

αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžαŸ’αžαž» task αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž˜αžΆαž“αž”αž‰αŸ’αž‡αžΈαž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸ‚αž›αž”αžšαžΆαž‡αŸαž™ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž•αŸ’αž‰αžΎαž”αž‰αŸ’αž‡αžΈαž“αŸαŸ‡αž‘αŸ… Telegram αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΈαž˜αž½αž™αŸ—αž±αŸ’αž™αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž“αŸ„αŸ‡αŸ–

  • filter() - αžαŸ’αžšαž„αž”αž‰αŸ’αž‡αžΈαž€αž·αž…αŸ’αž…αž€αžΆαžšαžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžαžΆαž„αž›αžΎ
  • select() - αž‘αž»αž€αžœαžΆαž›αžαŸ‚αž˜αž½αž™αž€αŸ’αž“αž»αž„αžαžΆαžšαžΆαž„αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž—αžΆαžšαž€αž·αž…αŸ’αž…
  • unique() - αž›αž»αž”αžˆαŸ’αž˜αŸ„αŸ‡αžŸαŸ’αž‘αž½αž“
  • unlist() β€” αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž‡αž½αžšαžˆαžšαžαžΆαžšαžΆαž„αžŠαŸ‚αž›αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‘αŸ…αž‡αžΆαžœαŸ‰αž·αž…αž‘αŸαžš
  • paste0() β€” αž—αŸ’αž‡αžΆαž”αŸ‹β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αž€αž·αž…αŸ’αž…αž€αžΆαžšβ€‹αž‘αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž”αž“αŸ’αž‘αžΆαžαŸ‹β€‹αž˜αž½αž™ αž αžΎαž™β€‹αžŠαžΆαž€αŸ‹β€‹αž”αž“αŸ’αž‘αžΆαžαŸ‹β€‹αž˜αž½αž™β€‹αž‡αžΆβ€‹αžŸαž‰αŸ’αž‰αžΆβ€‹αž”αŸ†αž”αŸ‚αž€ ឧ. n.

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž™αžΎαž„αž‚αžΊαž•αŸ’αž‰αžΎαž›αž‘αŸ’αž’αž•αž›αž“αŸαŸ‡αžαžΆαž˜αžšαž™αŸˆαžαŸαž‘αŸαž€αŸ’αžšαžΆαž˜αŸ”

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

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž€αžΌαžŠ bot αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

αž€αž·αž…αŸ’αž…αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž€αžΌαžŠαž”αžΌαž

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

}

αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž›αžΎ αžŸαžΌαž˜αž‡αŸ†αž“αž½αžŸαžŸαž‰αŸ’αž‰αžΆαžšαžΌαž”αž™αž“αŸ’αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αž·αž„αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž€αžΆαžšαž‡αž‡αŸ‚αž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αž›αŸαžαž€αžΌαžŠαŸ”

αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αžšαž„αž—αžΆαžšαž€αž·αž…αŸ’αž… αž§αž‘αžΆαž αžšαžŽαŸ αž–αž·αž“αž·αžαŸ’αž™αžαŸ‚αž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αžŠαŸ„αž™αž˜αž·αž“αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ”

αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αžŠαžΆαž€αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž•αŸ’αžŸαŸαž„αŸ—αž‘αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ αž αžΎαž™αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‡αž‡αŸ‚αž€ αž“αž·αž„αžŸαž‰αŸ’αž‰αžΆαžŸαž˜αŸ’αž„αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž’αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž‰αŸ’αž…αž”αŸ‹ configr.

αž§αž‘αžΆαž αžšαžŽαŸ ini config

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

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž’αžΆαž“αž’αžαŸαžšαž–αžΈ config αž€αŸ’αž“αž»αž„ 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

αžšαŸ€αž”αž…αŸ†αž€αžΆαž›αžœαž·αž—αžΆαž‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž€αŸαž“αž€αž·αž…αŸ’αž…αž€αžΆαžš

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž“αŸ…αž›αžΎαž€αžΆαž›αžœαž·αž—αžΆαž‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„αž“αŸαŸ‡αŸ” αž’αžαŸ’αžαž”αž‘. αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžšαŸ€αž”αžšαžΆαž”αŸ‹αžαŸ‚αž‡αŸ†αž αžΆαž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αž“αž»αžœαžαŸ’αžαžαžΆαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž“αŸαŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‡αŸ†αž αžΆαž“αžŽαžΆαž˜αž½αž™αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž…αŸ†αž–αŸ„αŸ‡αž’αŸ’αž“αž€ αž“αŸ„αŸ‡αžŸαžΌαž˜αž˜αžΎαž›αž’αžαŸ’αžαž”αž‘αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αžαŸ†αžŽαŸ”

αžŸαž“αŸ’αž˜αžαžαžΆαž™αžΎαž„αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΌαžŠ bot αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸ…αž―αž€αžŸαžΆαžšαž˜αž½αž™αŸ” check_bot.R. αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αž–αŸαž›β€‹αž±αŸ’αž™β€‹αž―αž€αžŸαžΆαžšβ€‹αž“αŸαŸ‡β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αž‘αŸ€αž„αž‘αžΆαžαŸ‹ αžŸαžΌαž˜β€‹αž’αŸ’αžœαžΎβ€‹αžαžΆαž˜β€‹αž‡αŸ†αž αžΆαž“β€‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ–

  1. αžŸαžšαžŸαŸαžšαž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αžαžαžŠαŸ‚αž› R αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„ Path system variable; αž“αŸ…αž€αŸ’αž“αž»αž„ Windows αž•αŸ’αž›αžΌαžœαž“αžΉαž„αž˜αžΆαž“αž’αŸ’αžœαžΈαžŠαžΌαž…αž“αŸαŸ‡αŸ– C:Program FilesRR-4.0.2bin.
  2. αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžš bat αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžŠαŸ„αž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αž“αŸ’αž‘αžΆαžαŸ‹αž˜αž½αž™αŸ” R CMD BATCH C:rscriptscheck_botcheck_bot.R. αž‡αŸ†αž“αž½αžŸ C:rscriptscheck_botcheck_bot.R αž‘αŸ…αž•αŸ’αž›αžΌαžœαž–αŸαž‰αž›αŸαž‰αž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžš R αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”
  3. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž”αŸ’αžšαžΎ Windows Task Scheduler αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž”αž…αŸ†αž€αžΆαž›αžœαž·αž—αžΆαž‚αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž§αž‘αžΆαž αžšαžŽαŸαžšαŸ€αž„αžšαžΆαž›αŸ‹αž€αž“αŸ’αž›αŸ‡αž˜αŸ‰αŸ„αž„αž˜αŸ’αžαž„αŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαž bot αž αžΎαž™αž”αŸ’αžšαžΎαžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‰αžΎαž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αž•αŸ’αžŸαŸαž„αŸ—αž€αŸ’αž“αž»αž„αž‘αžΌαžšαž›αŸαžαŸ”

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž—αžΆαžšαž€αž·αž…αŸ’αž…αž“αŸƒαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž—αžΆαžšαž€αž·αž…αŸ’αž…αžšαž”αžŸαŸ‹αžœαžΈαž“αžŠαžΌ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‰αžΎαž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αžŽαžΆαž˜αž½αž™ αž…αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž–αŸ’αž™αžΆαž€αžšαžŽαŸαž’αžΆαž€αžΆαžŸαž’αžΆαžαž» αžšαž αžΌαžαžŠαž›αŸ‹αžŸαž˜αŸ’αžšαž„αŸ‹αž—αžΆαž‚αž αŸŠαž»αž“αž“αŸ…αž›αžΎαž•αŸ’αžŸαžΆαžšαž αŸŠαž»αž“ αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ R αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž”αŸ’αžšαž—αž–αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž™αžΎαž„αž“αžΉαž„αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αž”αž“αŸ’αžαŸ‚αž˜αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž“αž·αž„αž€αŸ’αžαžΆαžšαž…αž»αž…αž‘αŸ…αž€αžΆαž“αŸ‹ bot αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž’αžΆαž…αž•αŸ’αž‰αžΎαž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž’αž“αž»αžœαžαŸ’αžαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αžαŸ‚αž˜αž‘αŸ€αžαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹