แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3): แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒแƒขแƒก

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒกแƒขแƒแƒขแƒ˜แƒ แƒกแƒ”แƒ แƒ˜แƒ˜แƒ“แƒแƒœ โ€žแƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜โ€œ. แƒฌแƒ˜แƒœแƒ แƒžแƒฃแƒ‘แƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒจแƒ˜ แƒ•แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ— แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜, แƒ’แƒแƒ•แƒ’แƒ–แƒแƒ•แƒœแƒแƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ— แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜ แƒ‘แƒแƒขแƒจแƒ˜. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒกแƒแƒœแƒแƒ› แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒ—, แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒฌแƒ˜แƒœแƒ, แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒแƒฅ แƒแƒฆแƒแƒ  แƒจแƒ”แƒ•แƒฉแƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜ แƒ‘แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒ แƒ” แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒš แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒ”แƒ‘แƒ–แƒ”.

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ‘แƒแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒแƒ‘แƒแƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒช แƒ‘แƒแƒขแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒก แƒ˜แƒœแƒขแƒฃแƒ˜แƒชแƒ˜แƒฃแƒ แƒก แƒ“แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ• แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก แƒ’แƒแƒฎแƒ“แƒ˜แƒก.

แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3): แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒแƒขแƒก

แƒงแƒ•แƒ”แƒšแƒ แƒกแƒขแƒแƒขแƒ˜แƒ แƒกแƒ”แƒ แƒ˜แƒ˜แƒ“แƒแƒœ "แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜"

  1. แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ‘แƒแƒขแƒก แƒ“แƒ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒแƒก แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒแƒจแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“
  2. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ“แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜ แƒ‘แƒแƒขแƒจแƒ˜
  3. แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒแƒขแƒก

แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก

แƒ—แƒฃ แƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ— แƒฉแƒ”แƒ›แƒ˜ แƒ“แƒ”แƒžแƒ”แƒจแƒ ะธ youtube แƒแƒ แƒฎแƒ”แƒ‘แƒ˜. แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ”แƒซแƒฆแƒ•แƒœแƒ”แƒ‘แƒ R แƒ”แƒœแƒแƒก.

  1. แƒ แƒ แƒขแƒ˜แƒžแƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ”แƒ‘แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒ แƒก แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜?
  2. แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ
  3. แƒ˜แƒœแƒšแƒแƒ˜แƒœ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ
    3.1. แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ InLine แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒ—
    3.2. แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒชแƒœแƒแƒ‘แƒ”แƒ‘แƒก แƒแƒ›แƒŸแƒแƒ›แƒ˜แƒœแƒ“แƒ”แƒš แƒแƒ›แƒ˜แƒœแƒ“แƒก แƒแƒ แƒฉแƒ”แƒฃแƒšแƒ˜ แƒฅแƒแƒšแƒแƒฅแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
    3.3. แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก habr.com-แƒ“แƒแƒœ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš Hub-แƒ—แƒแƒœ แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ—
  4. แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒ แƒ แƒขแƒ˜แƒžแƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ”แƒ‘แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒ แƒก แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜?

แƒแƒ› แƒฌแƒ”แƒ แƒ˜แƒก แƒ“แƒ แƒแƒก telegram.bot แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒแƒ แƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ:

  • แƒžแƒแƒกแƒฃแƒฎแƒ˜ - แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜, แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒก แƒฅแƒ•แƒ”แƒจ. แƒแƒกแƒ”แƒ—แƒ˜ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ  แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒ‘แƒแƒขแƒ–แƒ” แƒ“แƒ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ˜แƒก แƒ’แƒแƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒ—แƒแƒ•แƒแƒ“ แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ”.
  • Inline - แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒ‘แƒแƒขแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ. แƒ”แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒš แƒฆแƒ˜แƒšแƒแƒ™แƒก; แƒ”แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒแƒ“แƒ”แƒก แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒกแƒ’แƒแƒœ. แƒ“แƒ แƒแƒกแƒ”แƒ—แƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜ แƒ›แƒฃแƒจแƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— CallbackQueryHandler.

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ‘แƒแƒขแƒ›แƒ แƒ’แƒแƒฎแƒกแƒœแƒแƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ, แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒ— sendMessage(), แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒแƒ“ แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒก แƒแƒ“แƒ แƒ” แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ reply_markup.

แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก.

แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ

แƒ แƒแƒ’แƒแƒ แƒช แƒ–แƒ”แƒ›แƒแƒ— แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ”, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ‘แƒแƒขแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ.

แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ

bot <- Bot(token = "TOKEN")
chat_id <- "CHAT_ID"

# Create Custom Keyboard
text <- "Aren't those custom keyboards cool?"
RKM <- ReplyKeyboardMarkup(
  keyboard = list(
    list(KeyboardButton("Yes, they certainly are!")),
    list(KeyboardButton("I'm not quite sure")),
    list(KeyboardButton("No..."))
  ),
  resize_keyboard = FALSE,
  one_time_keyboard = TRUE
)

# Send Custom Keyboard
bot$sendMessage(chat_id, text, reply_markup = RKM)

แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ telegram.bot. แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ ReplyKeyboardMarkup(), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ• แƒ˜แƒฆแƒ”แƒ‘แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก KeyboardButton().

แƒ แƒแƒขแƒแƒ› ReplyKeyboardMarkup() แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒ˜แƒ˜แƒก, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒ•แƒšแƒ? แƒคแƒแƒฅแƒขแƒ˜แƒ, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒ˜แƒ•แƒšแƒ˜แƒ— แƒ›แƒ—แƒแƒ•แƒแƒ  แƒกแƒ˜แƒแƒก แƒ“แƒ แƒ›แƒแƒกแƒจแƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒ— แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ แƒ˜แƒ’แƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒš แƒกแƒ˜แƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฆแƒ˜แƒšแƒแƒ™แƒ˜ แƒ›แƒแƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒ”แƒ แƒ— แƒ แƒ˜แƒ’แƒจแƒ˜.

แƒ™แƒแƒ›แƒแƒ—แƒ˜ resize_keyboard แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ–แƒแƒ›แƒ แƒ“แƒ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ one_time_keyboard แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒ›แƒแƒšแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒก แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ‘แƒแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ”แƒฅแƒœแƒ”แƒ‘แƒ 3 แƒฆแƒ˜แƒšแƒแƒ™แƒ˜:

  • แƒฉแƒแƒขแƒ˜แƒก ID - แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒ— แƒฉแƒ”แƒ—แƒ˜แƒก ID แƒ‘แƒแƒขแƒ—แƒแƒœ แƒ“แƒ˜แƒแƒšแƒแƒ’แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘
  • แƒฉแƒ”แƒ›แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜ - แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜
  • แƒฉแƒ”แƒ›แƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒ - แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒแƒจแƒ˜

แƒ™แƒแƒ“แƒ˜ 1: แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ‘แƒแƒขแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒ—

library(telegram.bot)

# ัะพะทะดะฐั‘ะผ ัะบะทะตะผะฟะปัั€ ะบะปะฐััะฐ Updater
updater <- Updater('ะขะžะšะ•ะ ะ’ะะจะ•ะ“ะž ะ‘ะžะขะ')

# ัะพะทะดะฐั‘ะผ ะผะตั‚ะพะดั‹
## ะผะตั‚ะพะด ะดะปั ะทะฐะฟัƒัะบะฐ ะบะปะฐะฒะธะฐั‚ัƒั€ั‹
start <- function(bot, update) {

  # ัะพะทะดะฐั‘ะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  RKM <- ReplyKeyboardMarkup(
    keyboard = list(
      list(KeyboardButton("ะงะฐั‚ ID")),
      list(KeyboardButton("ะœะพั‘ ะธะผั")),
      list(KeyboardButton("ะœะพะน ะปะพะณะธะฝ"))
    ),
    resize_keyboard = FALSE,
    one_time_keyboard = TRUE
  )

  # ะพั‚ะฟั€ะฐะฒะปัะตะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  bot$sendMessage(update$message$chat_id,
                  text = 'ะ’ั‹ะฑะตั€ะธั‚ะต ะบะพะผะฐะฝะดัƒ', 
                  reply_markup = RKM)

}

## ะผะตั‚ะพะด ะฒะพะทะฒั€ะฐะทะฐัŽั‰ะธะน id ั‡ะฐั‚ะฐ
chat_id <- function(bot, update) {

  bot$sendMessage(update$message$chat_id, 
                  text = paste0("ะงะฐั‚ id ัั‚ะพะณะพ ะดะธะฐะปะพะณะฐ: ", update$message$chat_id),
                  parse_mode = "Markdown")

}

## ะผะตั‚ะพะด ะฒะพะทะฒั€ะฐั‰ะฐัŽั‰ะธะน ะธะผั
my_name <- function(bot, update) {

  bot$sendMessage(update$message$chat_id, 
                  text = paste0("ะ’ะฐั ะทะพะฒัƒั‚ ", update$message$from$first_name),
                  parse_mode = "Markdown")

}

## ะผะตั‚ะพะด ะฒะพะทะฒั€ะฐั‰ะฐัŽั‰ะธะน ะปะพะณะธะฝ
my_username <- function(bot, update) {

  bot$sendMessage(update$message$chat_id, 
                  text = paste0("ะ’ะฐัˆ ะปะพะณะธะฝ ", update$message$from$username),
                  parse_mode = "Markdown")

}

# ัะพะทะดะฐั‘ะผ ั„ะธะปัŒั‚ั€ั‹
## ัะพะพะฑั‰ะตะฝะธั ั ั‚ะตะบัั‚ะพะผ ะงะฐั‚ ID
MessageFilters$chat_id <- BaseFilter(function(message) {

  # ะฟั€ะพะฒะตั€ัะตะผ ั‚ะตะบัั‚ ัะพะพะฑั‰ะตะฝะธั
  message$text == "ะงะฐั‚ ID"

}
)

## ัะพะพะฑั‰ะตะฝะธั ั ั‚ะตะบัั‚ะพะผ ะœะพั‘ ะธะผั
MessageFilters$name <- BaseFilter(function(message) {

  # ะฟั€ะพะฒะตั€ัะตะผ ั‚ะตะบัั‚ ัะพะพะฑั‰ะตะฝะธั
  message$text == "ะœะพั‘ ะธะผั"

}
)

## ัะพะพะฑั‰ะตะฝะธั ั ั‚ะตะบัั‚ะพะผ ะœะพะน ะปะพะณะธะฝ
MessageFilters$username <- BaseFilter(function(message) {

  # ะฟั€ะพะฒะตั€ัะตะผ ั‚ะตะบัั‚ ัะพะพะฑั‰ะตะฝะธั
  message$text == "ะœะพะน ะปะพะณะธะฝ"
)

# ัะพะทะดะฐั‘ะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ
h_start    <- CommandHandler('start', start)
h_chat_id  <- MessageHandler(chat_id, filters = MessageFilters$chat_id)
h_name     <- MessageHandler(my_name, filters = MessageFilters$name)
h_username <- MessageHandler(my_username, filters = MessageFilters$username)

# ะดะพะฑะฐะฒะปัะตะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ ะฒ ะดะธัะฟะตั‚ั‡ะตั€
updater <- updater + 
            h_start +
            h_chat_id +
            h_name +
            h_username

# ะทะฐะฟัƒัะบะฐะตะผ ะฑะพั‚ะฐ 
updater$start_polling()

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— "YOUR BOT TOKEN" แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒŸแƒ”แƒขแƒแƒœแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก. BotFather (แƒ›แƒ” แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ” แƒ‘แƒแƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ–แƒ” แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ).

แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ›แƒ˜แƒ”แƒชแƒ˜แƒ— แƒ‘แƒแƒขแƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ /start, แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒก, แƒ แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“.

แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3): แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒแƒขแƒก

แƒ—แƒฃ แƒแƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜ แƒ’แƒแƒ’แƒ˜แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒก, แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ— แƒฌแƒ˜แƒœแƒแƒก. แƒ›แƒฃแƒฎแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ”.

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— 4 แƒ›แƒ”แƒ—แƒแƒ“แƒ˜:

  • แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ โ€” แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ
  • chat_id โ€” แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒ— แƒฉแƒแƒขแƒ˜แƒก ID
  • my_name โ€” แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜
  • my_username โ€” แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒ

แƒ’แƒแƒแƒžแƒ แƒแƒขแƒ”แƒกแƒขแƒแƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒแƒแƒ›แƒแƒขแƒ 3 แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜ แƒ›แƒแƒ—แƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—:

  • chat_id โ€” แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒ— "ะงะฐั‚ ID"
  • แƒกแƒแƒฎแƒ”แƒšแƒ˜ - แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒ— "ะœะพั‘ ะธะผั"
  • แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ โ€” แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒ— "ะœะพะน ะปะพะณะธะฝ"

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— 4 แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ”แƒœ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒก.

# ัะพะทะดะฐั‘ะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ
h_start    <- CommandHandler('start', start)
h_chat_id  <- MessageHandler(chat_id, filters = MessageFilters$chat_id)
h_name     <- MessageHandler(my_name, filters = MessageFilters$name)
h_username <- MessageHandler(my_username, filters = MessageFilters$username)

แƒ—แƒแƒ•แƒแƒ“ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— start() แƒ’แƒฃแƒœแƒ“แƒ˜ ReplyKeyboardMarkup().

RKM <- ReplyKeyboardMarkup(
    keyboard = list(
      list(KeyboardButton("ะงะฐั‚ ID")),
      list(KeyboardButton("ะœะพั‘ ะธะผั")),
      list(KeyboardButton("ะœะพะน ะปะพะณะธะฝ"))
    ),
    resize_keyboard = FALSE,
    one_time_keyboard = TRUE
)

แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒงแƒ•แƒ”แƒšแƒ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜ แƒ›แƒแƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ›แƒแƒ—แƒ˜ แƒ“แƒแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ”แƒ แƒ— แƒ แƒ˜แƒ’แƒจแƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒขแƒแƒœแƒ˜แƒ—. แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒ แƒแƒ› แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ”แƒ แƒ—แƒ˜ แƒ›แƒฌแƒ™แƒ แƒ˜แƒ•แƒ˜ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ“แƒ’แƒ›แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ— แƒ แƒ˜แƒ’แƒจแƒ˜ แƒ’แƒแƒ›แƒแƒ•แƒแƒฉแƒ˜แƒœแƒแƒ—, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ™แƒแƒ“แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“ แƒแƒกแƒ”:

RKM <- ReplyKeyboardMarkup(
    keyboard = list(
      list(
          KeyboardButton("ะงะฐั‚ ID"),
          KeyboardButton("ะœะพั‘ ะธะผั"),
          KeyboardButton("ะœะพะน ะปะพะณะธะฝ")
     )
    ),
    resize_keyboard = FALSE,
    one_time_keyboard = TRUE
)

แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3): แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒแƒขแƒก

แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒฉแƒแƒขแƒจแƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— sendMessage(), แƒ™แƒแƒ›แƒแƒ—แƒจแƒ˜ reply_markup.

  bot$sendMessage(update$message$chat_id,
                  text = 'ะ’ั‹ะฑะตั€ะธั‚ะต ะบะพะผะฐะฝะดัƒ', 
                  reply_markup = RKM)

แƒ˜แƒœแƒšแƒแƒ˜แƒœ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ

แƒ แƒแƒ’แƒแƒ แƒช แƒ–แƒ”แƒ›แƒแƒ— แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ”, Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ แƒ›แƒ˜แƒ‘แƒ›แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒ–แƒ”. แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒฌแƒ˜แƒšแƒแƒ“ แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ›แƒ—แƒแƒ•แƒแƒ  แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒแƒ–แƒ”.

แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ‘แƒแƒขแƒก, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒแƒ— Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ.

Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒแƒ–แƒ” แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒแƒ“, แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ answerCallbackQuery(), แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒแƒฉแƒ•แƒ”แƒœแƒแƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒแƒญแƒ”แƒ แƒก Inline แƒฆแƒ˜แƒšแƒแƒ™แƒก.

Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ›แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ CallbackQueryHandler().

Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒ™แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ  แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒแƒจแƒ˜ telegram.bot.

แƒ™แƒแƒ“แƒ˜ แƒจแƒ˜แƒ“แƒ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ

# Initialize bot
bot <- Bot(token = "TOKEN")
chat_id <- "CHAT_ID"

# Create Inline Keyboard
text <- "Could you type their phone number, please?"
IKM <- InlineKeyboardMarkup(
  inline_keyboard = list(
    list(
      InlineKeyboardButton(1),
      InlineKeyboardButton(2),
      InlineKeyboardButton(3)
    ),
    list(
      InlineKeyboardButton(4),
      InlineKeyboardButton(5),
      InlineKeyboardButton(6)
    ),
    list(
      InlineKeyboardButton(7),
      InlineKeyboardButton(8),
      InlineKeyboardButton(9)
    ),
    list(
      InlineKeyboardButton("*"),
      InlineKeyboardButton(0),
      InlineKeyboardButton("#")
    )
  )
)

# Send Inline Keyboard
bot$sendMessage(chat_id, text, reply_markup = IKM)

แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒแƒฌแƒงแƒแƒ— Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— InlineKeyboardMarkup(), แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒช Reply แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ. IN InlineKeyboardMarkup() แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒแƒ˜แƒแƒ แƒแƒ— Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ— InlineKeyboardButton().

แƒ˜แƒœแƒšแƒแƒ˜แƒœ แƒฆแƒ˜แƒšแƒแƒ™แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ แƒ‘แƒแƒขแƒ–แƒ” แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— callback_dataแƒแƒœ แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ HTML แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— url.

แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒกแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜แƒก Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ“แƒ”แƒก แƒ”แƒ แƒ— แƒ แƒ˜แƒ’แƒจแƒ˜.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒ‘แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒ—.

แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ InLine แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒ—

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ— แƒ‘แƒแƒขแƒก แƒ™แƒแƒ•แƒ˜แƒ“-19-แƒ˜แƒก แƒ”แƒฅแƒกแƒžแƒ แƒ”แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— /test, แƒ’แƒแƒ›แƒแƒ’แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒแƒก แƒแƒ แƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒ—, แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ’แƒแƒ›แƒแƒ’แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒ—.

แƒ™แƒแƒ“แƒ˜ 2: แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒกแƒ˜ แƒ‘แƒแƒขแƒ˜ Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒ—

library(telegram.bot)

# ัะพะทะดะฐั‘ะผ ัะบะทะตะผะฟะปัั€ ะบะปะฐััะฐ Updater
updater <- Updater('ะขะžะšะ•ะ ะ’ะะจะ•ะ“ะž ะ‘ะžะขะ')

# ะผะตั‚ะพะด ะดะปั ะพั‚ะฟั€ะฐะฒะบะธ InLine ะบะปะฐะฒะธะฐั‚ัƒั€ั‹
test <- function(bot, update) {

  # ัะพะทะดะฐั‘ะผ InLine ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  IKM <- InlineKeyboardMarkup(
    inline_keyboard = list(
      list(
        InlineKeyboardButton("ะ”ะฐ", callback_data = 'yes'),
        InlineKeyboardButton("ะะตั‚", callback_data = 'no')
      )
    )
  )

  # ะžั‚ะฟั€ะฐะฒะปัะตะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ ะฒ ั‡ะฐั‚
  bot$sendMessage(update$message$chat_id, 
                  text = "ะ’ั‹ ะฑะพะปะตั‚ะต ะบะพั€ะพะฝะฐะฒะธั€ัƒัะพะผ?", 
                  reply_markup = IKM)
}

# ะผะตั‚ะพะด ะดะปั ะพะฑั€ะฐะฑะพั‚ะบะธ ะฝะฐะถะฐั‚ะธั ะบะฝะพะฟะบะธ
answer_cb <- function(bot, update) {

  # ะฟะพะปัƒั‡ะตะฝะฝั‹ะต ะดะฐะฝะฝั‹ะต ั ะบะฝะพะฟะบะธ
  data <- update$callback_query$data

  # ะฟะพะปัƒั‡ะฐะตะผ ะธะผั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั, ะฝะฐะถะฐะฒัˆะตะณะพ ะบะฝะพะฟะบัƒ
  uname <- update$effective_user()$first_name

  # ะพะฑั€ะฐะฑะพั‚ะบะฐ ั€ะตะทัƒะปัŒั‚ะฐั‚ะฐ
  if ( data == 'no' ) {

    msg <- paste0(uname, ", ะฟะพะทะดั€ะฐะฒะปััŽ, ะฒะฐัˆ ั‚ะตัั‚ ะฝะฐ covid-19 ะพั‚ั€ะธั†ะฐั‚ะตะปัŒะฝั‹ะน.")

  } else {

    msg <- paste0(uname, ", ะบ ัะพะถะฐะปะตะฝะธ ะฒะฐัˆ ั‚ะตัั‚ ะฝะฐ covid-19 ะฟะพะปะพะถะธั‚ะตะปัŒะฝั‹ะน.")

  }

  # ะžั‚ะฟั€ะฐะฒะบะฐ ัะพะพะฑั‰ะตะฝะธั
  bot$sendMessage(chat_id = update$from_chat_id(),
                  text = msg)

  # ัะพะพะฑั‰ะฐะตะผ ะฑะพั‚ัƒ, ั‡ั‚ะพ ะทะฐะฟั€ะพั ั ะบะฝะพะฟะบะธ ะฟั€ะธะฝัั‚
  bot$answerCallbackQuery(callback_query_id = update$callback_query$id) 
}

# ัะพะทะดะฐั‘ะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ
inline_h      <- CommandHandler('test', test)
query_handler <- CallbackQueryHandler(answer_cb)

# ะดะพะฑะฐะฒะปัะตะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ ะฒ ะดะธัะฟะตั‚ั‡ะตั€
updater <- updater + inline_h + query_handler

# ะทะฐะฟัƒัะบะฐะตะผ ะฑะพั‚ะฐ
updater$start_polling()

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— "YOUR BOT TOKEN" แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒŸแƒ”แƒขแƒแƒœแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก. BotFather (แƒ›แƒ” แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ” แƒ‘แƒแƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ–แƒ” แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ).

แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜:
แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3): แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒแƒขแƒก

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒ แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜:

  • แƒขแƒ”แƒกแƒขแƒ˜ โ€” แƒฉแƒแƒขแƒจแƒ˜ แƒ’แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“ Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ
  • แƒžแƒแƒกแƒฃแƒฎแƒ˜_แƒ™แƒ‘ โ€” แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒแƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒ“แƒแƒœ, แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒจแƒ˜ callback_data, แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— update$callback_query$data, แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒžแƒแƒกแƒฃแƒฎแƒ˜_แƒ™แƒ‘.

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ‘แƒแƒขแƒ›แƒ แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒแƒก แƒ แƒ”แƒแƒ’แƒ˜แƒ แƒ”แƒ‘แƒ Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒแƒ–แƒ”, แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜_แƒ™แƒ‘ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ : CallbackQueryHandler(answer_cb). แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš แƒ›แƒ”แƒ—แƒแƒ“แƒก Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก. แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ CallbackQueryHandler แƒ˜แƒฆแƒ”แƒ‘แƒก แƒแƒ  แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒก:

  • callback โ€” แƒ›แƒ”แƒ—แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒแƒ—
  • pattern โ€” แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” แƒ›แƒ˜แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒคแƒ˜แƒšแƒขแƒ•แƒ แƒ callback_data.

แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— pattern แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒก แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ” แƒ›แƒ”แƒ—แƒแƒ“แƒ˜:

แƒ™แƒแƒ“แƒ˜ 3: แƒชแƒแƒšแƒ™แƒ” แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

library(telegram.bot)

# ัะพะทะดะฐั‘ะผ ัะบะทะตะผะฟะปัั€ ะบะปะฐััะฐ Updater
updater <- Updater('ะขะžะšะ•ะ ะ’ะะจะ•ะ“ะž ะ‘ะžะขะ')

# ะผะตั‚ะพะด ะดะปั ะพั‚ะฟั€ะฐะฒะบะธ InLine ะบะปะฐะฒะธะฐั‚ัƒั€ั‹
test <- function(bot, update) {  

  # ัะพะทะดะฐั‘ะผ InLine ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  IKM <- InlineKeyboardMarkup(
    inline_keyboard = list(
      list(
        InlineKeyboardButton("ะ”ะฐ", callback_data = 'yes'),
        InlineKeyboardButton("ะะตั‚", callback_data = 'no')
      )
    )
  )

  # ะžั‚ะฟั€ะฐะฒะปัะตะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ ะฒ ั‡ะฐั‚
  bot$sendMessage(update$message$chat_id, 
                  text = "ะ’ั‹ ะฑะพะปะตั‚ะต ะบะพั€ะพะฝะฐะฒะธั€ัƒัะพะผ?", 
                  reply_markup = IKM)
}

# ะผะตั‚ะพะด ะดะปั ะพะฑั€ะฐะฑะพั‚ะบะธ ะฝะฐะถะฐั‚ะธั ะบะฝะพะฟะบะธ ะ”ะฐ
answer_cb_yes <- function(bot, update) {

  # ะฟะพะปัƒั‡ะฐะตะผ ะธะผั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั, ะฝะฐะถะฐะฒัˆะตะณะพ ะบะฝะพะฟะบัƒ
  uname <- update$effective_user()$first_name

  # ะพะฑั€ะฐะฑะพั‚ะบะฐ ั€ะตะทัƒะปัŒั‚ะฐั‚ะฐ
  msg <- paste0(uname, ", ะบ ัะพะถะฐะปะตะฝะธ ะฒะฐัˆ ั‚ะตะบัั‚ ะฝะฐ covid-19 ะฟะพะปะพะถะธั‚ะตะปัŒะฝั‹ะน.")

  # ะžั‚ะฟั€ะฐะฒะบะฐ ัะพะพะฑั‰ะตะฝะธั
  bot$sendMessage(chat_id = update$from_chat_id(),
                  text = msg)

  # ัะพะพะฑั‰ะฐะตะผ ะฑะพั‚ัƒ, ั‡ั‚ะพ ะทะฐะฟั€ะพั ั ะบะฝะพะฟะบะธ ะฟั€ะธะฝัั‚
  bot$answerCallbackQuery(callback_query_id = update$callback_query$id) 
}

# ะผะตั‚ะพะด ะดะปั ะพะฑั€ะฐะฑะพั‚ะบะธ ะฝะฐะถะฐั‚ะธั ะบะฝะพะฟะบะธ ะะตั‚
answer_cb_no <- function(bot, update) {

  # ะฟะพะปัƒั‡ะฐะตะผ ะธะผั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั, ะฝะฐะถะฐะฒัˆะตะณะพ ะบะฝะพะฟะบัƒ
  uname <- update$effective_user()$first_name

  msg <- paste0(uname, ", ะฟะพะทะดั€ะฐะฒะปััŽ, ะฒะฐัˆ ั‚ะตะบัั‚ ะฝะฐ covid-19 ะพั‚ั€ะธั†ะฐั‚ะตะปัŒะฝั‹ะน.")

  # ะžั‚ะฟั€ะฐะฒะบะฐ ัะพะพะฑั‰ะตะฝะธั
  bot$sendMessage(chat_id = update$from_chat_id(),
                  text = msg)

  # ัะพะพะฑั‰ะฐะตะผ ะฑะพั‚ัƒ, ั‡ั‚ะพ ะทะฐะฟั€ะพั ั ะบะฝะพะฟะบะธ ะฟั€ะธะฝัั‚
  bot$answerCallbackQuery(callback_query_id = update$callback_query$id) 
}

# ัะพะทะดะฐั‘ะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ
inline_h          <- CommandHandler('test', test)
query_handler_yes <- CallbackQueryHandler(answer_cb_yes, pattern = 'yes')
query_handler_no  <- CallbackQueryHandler(answer_cb_no, pattern = 'no')

# ะดะพะฑะฐะฒะปัะตะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ ะฒ ะดะธัะฟะตั‚ั‡ะตั€
updater <- updater + 
            inline_h + 
            query_handler_yes +
            query_handler_no

# ะทะฐะฟัƒัะบะฐะตะผ ะฑะพั‚ะฐ
updater$start_polling()

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— "YOUR BOT TOKEN" แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒŸแƒ”แƒขแƒแƒœแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก. BotFather (แƒ›แƒ” แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ” แƒ‘แƒแƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ–แƒ” แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ).

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ”แƒ— 2 แƒชแƒแƒšแƒ™แƒ” แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ”.แƒ˜. แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒแƒญแƒ˜แƒ แƒ” แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ” แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ patternแƒ›แƒแƒ—แƒ˜ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก:

query_handler_yes <- CallbackQueryHandler(answer_cb_yes, pattern = 'yes')
query_handler_no  <- CallbackQueryHandler(answer_cb_no, pattern = 'no')

แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒ™แƒแƒ“แƒ˜ แƒ›แƒ—แƒแƒ•แƒ แƒ“แƒ”แƒ‘แƒ แƒžแƒแƒกแƒฃแƒฎแƒ˜_แƒ™แƒ‘ แƒ’แƒฃแƒœแƒ“แƒ˜ bot$answerCallbackQuery(callback_query_id = update$callback_query$id), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒฃแƒ‘แƒœแƒ”แƒ‘แƒ แƒ‘แƒแƒขแƒก, แƒ แƒแƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒ“แƒแƒœ.

แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒชแƒœแƒแƒ‘แƒ”แƒ‘แƒก แƒแƒ›แƒŸแƒแƒ›แƒ˜แƒœแƒ“แƒ”แƒš แƒแƒ›แƒ˜แƒœแƒ“แƒก แƒแƒ แƒฉแƒ”แƒฃแƒšแƒ˜ แƒฅแƒแƒšแƒแƒฅแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒจแƒ”แƒ•แƒ”แƒชแƒแƒ“แƒแƒ— แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ‘แƒแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒแƒ›แƒ˜แƒœแƒ“แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก.

แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ. แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ’แƒฃแƒœแƒ“แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  /start แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ แƒ”แƒ™แƒแƒ•แƒ— แƒ›แƒ—แƒแƒ•แƒแƒ  แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒฅแƒ•แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜ โ€žแƒแƒ›แƒ˜แƒœแƒ“แƒ˜โ€œ. แƒแƒ› แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒ—, แƒ แƒแƒ› แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒฅแƒแƒšแƒแƒฅแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช แƒ’แƒกแƒฃแƒ แƒ— แƒ’แƒแƒ˜แƒ’แƒแƒ— แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒแƒ›แƒ˜แƒœแƒ“แƒ˜. แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒฅแƒแƒšแƒแƒฅแƒ˜ แƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒแƒ›แƒ˜แƒœแƒ“แƒ˜.

แƒแƒ› แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒžแƒแƒ™แƒ”แƒขแƒก:

  • httr โ€” แƒžแƒแƒ™แƒ”แƒขแƒ˜ HTTP แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”แƒช แƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  API-แƒกแƒ—แƒแƒœ. แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒฃแƒคแƒแƒกแƒ API-แƒก openweathermap.org.
  • stringr โ€” แƒขแƒ”แƒฅแƒกแƒขแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜, แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ›แƒแƒก แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒฉแƒ”แƒฃแƒš แƒฅแƒแƒšแƒแƒฅแƒจแƒ˜ แƒแƒ›แƒ˜แƒœแƒ“แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

แƒ™แƒแƒ“แƒ˜ 4: แƒ‘แƒแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒแƒ แƒฉแƒ”แƒฃแƒšแƒ˜ แƒฅแƒแƒšแƒแƒฅแƒ˜แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒแƒ›แƒ˜แƒœแƒ“แƒก

library(telegram.bot)
library(httr)
library(stringr)

# ัะพะทะดะฐั‘ะผ ัะบะทะตะผะฟะปัั€ ะบะปะฐััะฐ Updater
updater <- Updater('ะขะžะšะ•ะ ะ’ะะจะ•ะ“ะž ะ‘ะžะขะ')

# ัะพะทะดะฐั‘ะผ ะผะตั‚ะพะดั‹
## ะผะตั‚ะพะด ะดะปั ะทะฐะฟัƒัะบะฐ ะพัะฝะพะฒะฝะพะน ะบะปะฐะฒะธะฐั‚ัƒั€ั‹
start <- function(bot, update) {

  # ัะพะทะดะฐั‘ะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  RKM <- ReplyKeyboardMarkup(
    keyboard = list(
      list(
        KeyboardButton("ะŸะพะณะพะดะฐ")
      )
    ),
    resize_keyboard = TRUE,
    one_time_keyboard = TRUE
  )

  # ะพั‚ะฟั€ะฐะฒะปัะตะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  bot$sendMessage(update$message$chat_id,
                  text = 'ะ’ั‹ะฑะตั€ะธั‚ะต ะบะพะผะฐะฝะดัƒ', 
                  reply_markup = RKM)

}

## ะœะตั‚ะพะด ะฒั‹ะทะพะฒะฐ Inine ะบะปะฐะฒะธะฐั‚ัƒั€ั‹
weather <- function(bot, update) {

  IKM <- InlineKeyboardMarkup(
    inline_keyboard = list(
      list(
        InlineKeyboardButton(text = 'ะœะพัะบะฒะฐ', callback_data = 'New York,us'),
        InlineKeyboardButton(text = 'ะกะฐะฝะบั‚-ะŸะตั‚ะตั€ะฑัƒั€ะณ', callback_data = 'Saint Petersburg'),
        InlineKeyboardButton(text = 'ะัŒัŽ-ะ™ะพั€ะบ', callback_data = 'New York')
      ),
      list(
        InlineKeyboardButton(text = 'ะ•ะบะฐั‚ะตั€ะธะฝะฑัƒั€ะณ', callback_data = 'Yekaterinburg,ru'),
        InlineKeyboardButton(text = 'ะ‘ะตั€ะปะธะฝ', callback_data = 'Berlin,de'),
        InlineKeyboardButton(text = 'ะŸะฐั€ะธะถ', callback_data = 'Paris,fr')
      ),
      list(
        InlineKeyboardButton(text = 'ะ ะธะผ', callback_data = 'Rome,it'),
        InlineKeyboardButton(text = 'ะžะดะตััะฐ', callback_data = 'Odessa,ua'),
        InlineKeyboardButton(text = 'ะšะธะตะฒ', callback_data = 'Kyiv,fr')
      ),
      list(
        InlineKeyboardButton(text = 'ะขะพะบะธะพ', callback_data = 'Tokyo'),
        InlineKeyboardButton(text = 'ะะผัั‚ะตั€ะดะฐะผ', callback_data = 'Amsterdam,nl'),
        InlineKeyboardButton(text = 'ะ’ะฐัˆะธะฝะณั‚ะพะฝ', callback_data = 'Washington,us')
      )
    )
  )

  # Send Inline Keyboard
  bot$sendMessage(chat_id = update$message$chat_id, 
                  text = "ะ’ั‹ะฑะตั€ะธั‚ะต ะณะพั€ะพะด", 
                  reply_markup = IKM)
}

# ะผะตั‚ะพะด ะดะปั ัะพะพะฑั‰ะตะฝะธั ะฟะพะณะพะดั‹
answer_cb <- function(bot, update) {

  # ะฟะพะปัƒั‡ะฐะตะผ ะธะท ัะพะพะฑั‰ะตะฝะธั ะณะพั€ะพะด
  city <- update$callback_query$data

  # ะพั‚ะฟั€ะฐะฒะปัะตะผ ะทะฐะฟั€ะพั
  ans <- GET('https://api.openweathermap.org/data/2.5/weather', 
             query = list(q     = city,
                          lang  = 'ru',
                          units = 'metric',
                          appid = '4776568ccea136ffe4cda9f1969af340')) 

  # ะฟะฐั€ัะธะผ ะพั‚ะฒะตั‚
  result <- content(ans)

  # ั„ะพั€ะผะธั€ัƒะตะผ ัะพะพะฑั‰ะตะฝะธะต
  msg <- str_glue("{result$name} ะฟะพะณะพะดะฐ:n",
                  "ะขะตะบัƒั‰ะฐั ั‚ะตะผะฟะตั€ะฐั‚ัƒั€ะฐ: {result$main$temp}n",
                  "ะกะบะพั€ะพัั‚ัŒ ะฒะตั‚ั€ะฐ: {result$wind$speed}n",
                  "ะžะฟะธัะฐะฝะธะต: {result$weather[[1]]$description}")

  # ะพั‚ะฟั€ะฐะฒะปัะตะผ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะพ ะฟะพะณะพะดะต
  bot$sendMessage(chat_id = update$from_chat_id(),
                  text    = msg)

  bot$answerCallbackQuery(callback_query_id = update$callback_query$id) 
}

# ัะพะทะดะฐั‘ะผ ั„ะธะปัŒั‚ั€ั‹
## ัะพะพะฑั‰ะตะฝะธั ั ั‚ะตะบัั‚ะพะผ ะŸะพะณะพะดะฐ
MessageFilters$weather <- BaseFilter(function(message) {

  # ะฟั€ะพะฒะตั€ัะตะผ ั‚ะตะบัั‚ ัะพะพะฑั‰ะตะฝะธั
  message$text == "ะŸะพะณะพะดะฐ"

}
)

# ัะพะทะดะฐั‘ะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ
h_start         <- CommandHandler('start', start)
h_weather       <- MessageHandler(weather, filters = MessageFilters$weather)
h_query_handler <- CallbackQueryHandler(answer_cb)

# ะดะพะฑะฐะฒะปัะตะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ ะฒ ะดะธัะฟะตั‚ั‡ะตั€
updater <- updater + 
              h_start +
              h_weather +
              h_query_handler

# ะทะฐะฟัƒัะบะฐะตะผ ะฑะพั‚ะฐ
updater$start_polling()

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— "YOUR BOT TOKEN" แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒŸแƒ”แƒขแƒแƒœแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก. BotFather (แƒ›แƒ” แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ” แƒ‘แƒแƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ–แƒ” แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ).

แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ‘แƒแƒขแƒ˜ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒแƒกแƒ”:
แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3): แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒแƒขแƒก

แƒกแƒฅแƒ”แƒ›แƒแƒขแƒฃแƒ แƒแƒ“, แƒ”แƒก แƒ‘แƒแƒขแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ˜:
แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3): แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒแƒขแƒก

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— 3 แƒ›แƒ”แƒ—แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒแƒ›แƒ˜แƒœแƒ“แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—:

  • แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ โ€” แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ‘แƒแƒขแƒ˜แƒก แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ
  • แƒแƒ›แƒ˜แƒœแƒ“แƒ˜ โ€” แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ แƒฅแƒแƒšแƒแƒฅแƒ˜แƒก แƒแƒกแƒแƒ แƒฉแƒ”แƒ•แƒแƒ“
  • แƒžแƒแƒกแƒฃแƒฎแƒ˜_แƒ™แƒ‘ โ€” แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒแƒ›แƒ˜แƒœแƒ“แƒก API-แƒ“แƒแƒœ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒฅแƒแƒšแƒแƒฅแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ›แƒแƒก แƒฉแƒแƒขแƒจแƒ˜.

แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— แƒ›แƒแƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— /start, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ CommandHandler('start', start).

แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒแƒ›แƒ˜แƒœแƒ“แƒ˜ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒ›แƒแƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜:

# ัะพะทะดะฐั‘ะผ ั„ะธะปัŒั‚ั€ั‹
## ัะพะพะฑั‰ะตะฝะธั ั ั‚ะตะบัั‚ะพะผ ะŸะพะณะพะดะฐ
MessageFilters$weather <- BaseFilter(function(message) {

  # ะฟั€ะพะฒะตั€ัะตะผ ั‚ะตะบัั‚ ัะพะพะฑั‰ะตะฝะธั
  message$text == "ะŸะพะณะพะดะฐ"

}
)

แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ— แƒแƒ› แƒ›แƒ”แƒ—แƒแƒ“แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ˜แƒ—: MessageHandler(weather, filters = MessageFilters$weather).

แƒ“แƒ แƒ‘แƒแƒšแƒแƒก, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜_แƒ™แƒ‘ แƒ แƒ”แƒแƒ’แƒ˜แƒ แƒ”แƒ‘แƒก Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒญแƒ”แƒ แƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜: CallbackQueryHandler(answer_cb).

แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒžแƒแƒกแƒฃแƒฎแƒ˜_แƒ™แƒ‘, แƒ•แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ“แƒ แƒ•แƒฌแƒ”แƒ แƒ— แƒชแƒ•แƒšแƒแƒ“แƒจแƒ˜ city: city <- update$callback_query$data. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒ˜แƒ—แƒฎแƒแƒ•แƒ— แƒแƒ›แƒ˜แƒœแƒ“แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก API-แƒ“แƒแƒœ, แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ“แƒ แƒ•แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ‘แƒแƒšแƒแƒก แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒ”แƒ—แƒแƒ“แƒก answerCallbackQuery แƒ แƒแƒ—แƒ แƒจแƒ”แƒแƒขแƒงแƒแƒ‘แƒ˜แƒœแƒแƒ— แƒ‘แƒแƒขแƒก, แƒ แƒแƒ› แƒ“แƒแƒ•แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ— Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒก แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ.

แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš Hub-แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ— www.habr.com.

แƒ›แƒ” แƒฌแƒแƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒ’แƒ”แƒœแƒ— แƒแƒ› แƒ‘แƒแƒขแƒก, แƒ แƒแƒ—แƒ แƒ’แƒแƒฉแƒ•แƒ”แƒœแƒแƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฉแƒ•แƒ”แƒœแƒแƒ— Inline แƒฆแƒ˜แƒšแƒแƒ™แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒ˜แƒ“แƒ˜แƒแƒœ แƒ•แƒ”แƒ‘ แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ–แƒ”.

แƒแƒ› แƒ‘แƒแƒขแƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒ แƒฌแƒ˜แƒœแƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜แƒ; แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ•แƒฃแƒจแƒ•แƒ”แƒ‘แƒ— แƒ›แƒ—แƒแƒ•แƒแƒ  แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒแƒก /start. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒ‘แƒแƒขแƒ˜ แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก 6 แƒฐแƒแƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒก, แƒ แƒแƒ›แƒšแƒ˜แƒ“แƒแƒœแƒแƒช แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ—, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒฃแƒš แƒชแƒ”แƒœแƒขแƒ แƒก แƒ“แƒ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— 5 แƒฃแƒแƒฎแƒšแƒ”แƒก แƒžแƒฃแƒ‘แƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก แƒแƒ แƒฉแƒ”แƒฃแƒšแƒ˜ แƒฐแƒแƒ‘แƒ˜แƒ“แƒแƒœ.

แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒ”แƒกแƒ›แƒ˜แƒ—, แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ  แƒžแƒแƒ™แƒ”แƒขแƒก habR, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜ แƒฐแƒแƒ‘แƒ แƒแƒกแƒ’แƒแƒœ แƒ“แƒ แƒ›แƒแƒ— แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ แƒ .

แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒžแƒแƒ™แƒ”แƒขแƒ˜ habR แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ github-แƒ“แƒแƒœ, แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜ devtools. แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜.

install.packages('devtools')
devtools::install_github('selesnow/habR')

แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ–แƒ”แƒ›แƒแƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ‘แƒแƒขแƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ“แƒก:

แƒ™แƒแƒ“แƒ˜ 5: แƒ‘แƒแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒก แƒแƒ แƒฉแƒ”แƒฃแƒš แƒฐแƒแƒ‘แƒ–แƒ”

library(telegram.bot)
library(habR)

# ัะพะทะดะฐั‘ะผ ัะบะทะตะผะฟะปัั€ ะบะปะฐััะฐ Updater
updater <- Updater('ะขะžะšะ•ะ ะ’ะะจะ•ะ“ะž ะ‘ะžะขะ')

# ัะพะทะดะฐั‘ะผ ะผะตั‚ะพะดั‹
## ะผะตั‚ะพะด ะดะปั ะทะฐะฟัƒัะบะฐ ะพัะฝะพะฒะฝะพะน ะบะปะฐะฒะธะฐั‚ัƒั€ั‹
start <- function(bot, update) {

  # ัะพะทะดะฐั‘ะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  RKM <- ReplyKeyboardMarkup(
    keyboard = list(
      list(
        KeyboardButton("ะกะฟะธัะพะบ ัั‚ะฐั‚ะตะน")
      )
    ),
    resize_keyboard = TRUE,
    one_time_keyboard = TRUE
  )

  # ะพั‚ะฟั€ะฐะฒะปัะตะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  bot$sendMessage(update$message$chat_id,
                  text = 'ะ’ั‹ะฑะตั€ะธั‚ะต ะบะพะผะฐะฝะดัƒ', 
                  reply_markup = RKM)

}

## ะœะตั‚ะพะด ะฒั‹ะทะพะฒะฐ Inine ะบะปะฐะฒะธะฐั‚ัƒั€ั‹
habs <- function(bot, update) {

  IKM <- InlineKeyboardMarkup(
    inline_keyboard = list(
      list(
        InlineKeyboardButton(text = 'R', callback_data = 'R'),
        InlineKeyboardButton(text = 'Data Mining', callback_data = 'data_mining'),
        InlineKeyboardButton(text = 'Data Engineering', callback_data = 'data_engineering')
      ),
      list(
        InlineKeyboardButton(text = 'Big Data', callback_data = 'bigdata'),
        InlineKeyboardButton(text = 'Python', callback_data = 'python'),
        InlineKeyboardButton(text = 'ะ’ะธะทัƒะฐะปะธะทะฐั†ะธั ะดะฐะฝะฝั‹ั…', callback_data = 'data_visualization')
      )
    )
  )

  # Send Inline Keyboard
  bot$sendMessage(chat_id = update$message$chat_id, 
                  text = "ะ’ั‹ะฑะตั€ะธั‚ะต ะฅะฐะฑ", 
                  reply_markup = IKM)
}

# ะผะตั‚ะพะด ะดะปั ัะพะพะฑั‰ะตะฝะธั ะฟะพะณะพะดั‹
answer_cb <- function(bot, update) {

  # ะฟะพะปัƒั‡ะฐะตะผ ะธะท ัะพะพะฑั‰ะตะฝะธั ะณะพั€ะพะด
  hub <- update$callback_query$data

  # ัะพะพะฑั‰ะตะฝะธะต ะพ ั‚ะพะผ, ั‡ั‚ะพ ะดะฐะฝะฝั‹ะต ะฟะพ ะบะฝะพะฟะบะต ะฟะพะปัƒั‡ะตะฝั‹
  bot$answerCallbackQuery(callback_query_id = update$callback_query$id, 
                          text = 'ะŸะพะดะพะถะดะธั‚ะต ะฝะตัะบะพะปัŒะบะพ ะผะธะฝัƒั‚, ะทะฐะฟั€ะพั ะพะฑั€ะฐะฑะฐั‚ั‹ะฒะฐะตั‚ัั') 

  # ัะพะพะฑั‰ะตะฝะธะต ะพ ั‚ะพะผ, ั‡ั‚ะพ ะฝะฐะดะพ ะฟะพะดะพะถะดะฐั‚ัŒ ะฟะพะบะฐ ะฑะพั‚ ะฟะพะปัƒั‡ะธั‚ ะดะฐะฝะฝั‹ะต
  mid <- bot$sendMessage(chat_id = update$from_chat_id(),
                         text    = "ะŸะพะดะพะถะดะธั‚ะต ะฝะตัะบะพะปัŒะบะพ ะผะธะฝัƒั‚ ะฟะพะบะฐ, ั ัะพะฑะตั€ัƒ ะดะฐะฝะฝั‹ะต ะฟะพ ะฒั‹ะฑั€ะฐะฝะฝะพะผัƒ ะฅะฐะฑัƒ")

  # ะฟะฐั€ัะธะผ ะฅะฐะฑั€
  posts <- head(habr_hub_posts(hub, 1), 5)

  # ัƒะดะฐะปัะตะผ ัะพะพะฑั‰ะตะฝะธะต ะพ ั‚ะพะผ, ั‡ั‚ะพ ะฝะฐะดะพ ะฟะพะดะพะถะดะฐั‚ัŒ
  bot$deleteMessage(update$from_chat_id(), mid$message_id) 

  # ั„ะพั€ะผะธั€ัƒะตะผ ัะฟะธัะพะบ ะบะฝะพะฟะพะบ
  keys <- lapply(1:5, function(x) list(InlineKeyboardButton(posts$title[x], url = posts$link[x])))

  # ั„ะพั€ะผะธั€ัƒะตะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  IKM <- InlineKeyboardMarkup(
    inline_keyboard =  keys 
    )

  # ะพั‚ะฟั€ะฐะฒะปัะตะผ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะพ ะฟะพะณะพะดะต
  bot$sendMessage(chat_id = update$from_chat_id(),
                  text    = paste0("5 ะฝะฐะธะฑะพะปะตะต ัะฒะตะถะธั… ัั‚ะฐั‚ะตะน ะธะท ะฅะฐะฑะฐ ", hub),
                  reply_markup = IKM)

}

# ัะพะทะดะฐั‘ะผ ั„ะธะปัŒั‚ั€ั‹
## ัะพะพะฑั‰ะตะฝะธั ั ั‚ะตะบัั‚ะพะผ ะŸะพะณะพะดะฐ
MessageFilters$hubs <- BaseFilter(function(message) {

  # ะฟั€ะพะฒะตั€ัะตะผ ั‚ะตะบัั‚ ัะพะพะฑั‰ะตะฝะธั
  message$text == "ะกะฟะธัะพะบ ัั‚ะฐั‚ะตะน"

}
)

# ัะพะทะดะฐั‘ะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ
h_start         <- CommandHandler('start', start)
h_hubs          <- MessageHandler(habs, filters = MessageFilters$hubs)
h_query_handler <- CallbackQueryHandler(answer_cb)

# ะดะพะฑะฐะฒะปัะตะผ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ ะฒ ะดะธัะฟะตั‚ั‡ะตั€
updater <- updater + 
  h_start +
  h_hubs  +
  h_query_handler

# ะทะฐะฟัƒัะบะฐะตะผ ะฑะพั‚ะฐ
updater$start_polling()

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— "YOUR BOT TOKEN" แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒŸแƒ”แƒขแƒแƒœแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ‘แƒแƒขแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก. BotFather (แƒ›แƒ” แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ” แƒ‘แƒแƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ–แƒ” แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ).

แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒแƒ› แƒจแƒ”แƒ“แƒ”แƒ’แƒก:
แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ R-แƒจแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3): แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ‘แƒแƒขแƒก

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ— แƒ›แƒ”แƒ—แƒแƒ“แƒจแƒ˜ แƒจแƒ”แƒกแƒแƒ แƒฉแƒ”แƒ•แƒแƒ“ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒฐแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ habs:

## ะœะตั‚ะพะด ะฒั‹ะทะพะฒะฐ Inine ะบะปะฐะฒะธะฐั‚ัƒั€ั‹
habs <- function(bot, update) {

  IKM <- InlineKeyboardMarkup(
    inline_keyboard = list(
      list(
        InlineKeyboardButton(text = 'R', callback_data = 'r'),
        InlineKeyboardButton(text = 'Data Mining', callback_data = 'data_mining'),
        InlineKeyboardButton(text = 'Data Engineering', callback_data = 'data_engineering')
      ),
      list(
        InlineKeyboardButton(text = 'Big Data', callback_data = 'bigdata'),
        InlineKeyboardButton(text = 'Python', callback_data = 'python'),
        InlineKeyboardButton(text = 'ะ’ะธะทัƒะฐะปะธะทะฐั†ะธั ะดะฐะฝะฝั‹ั…', callback_data = 'data_visualization')
      )
    )
  )

  # Send Inline Keyboard
  bot$sendMessage(chat_id = update$message$chat_id, 
                  text = "ะ’ั‹ะฑะตั€ะธั‚ะต ะฅะฐะฑ", 
                  reply_markup = IKM)
}

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ Hub-แƒ“แƒแƒœ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— habr_hub_posts(), แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒ“แƒแƒœ habR. แƒแƒ›แƒแƒ•แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒแƒ•แƒ—, แƒ แƒแƒ› แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช 20 แƒกแƒขแƒแƒขแƒ˜แƒแƒ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜. แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒ“แƒแƒœ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— head() แƒฉแƒ•แƒ”แƒœ แƒ•แƒขแƒแƒ•แƒ”แƒ‘แƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒขแƒแƒž 5-แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜.

  # ะฟะฐั€ัะธะผ ะฅะฐะฑั€
  posts <- head(habr_hub_posts(hub, 1), 5)

แƒšแƒแƒ’แƒ˜แƒ™แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒฐแƒ’แƒแƒ•แƒก แƒฌแƒ˜แƒœแƒ แƒ‘แƒแƒขแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— Inline แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒแƒก แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ˜แƒ— แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒแƒ“ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. lapply().

  # ั„ะพั€ะผะธั€ัƒะตะผ ัะฟะธัะพะบ ะบะฝะพะฟะพะบ
  keys <- lapply(1:5, function(x) list(InlineKeyboardButton(posts$title[x], url = posts$link[x])))

  # ั„ะพั€ะผะธั€ัƒะตะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
  IKM <- InlineKeyboardMarkup(
    inline_keyboard =  keys 
    )

แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒจแƒ˜ แƒฉแƒแƒ•แƒกแƒ•แƒ˜แƒ— แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜ posts$title[x]แƒ“แƒ แƒ™แƒแƒ›แƒแƒ—แƒจแƒ˜ url แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ˜: url = posts$link[x].

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒคแƒ˜แƒšแƒขแƒ แƒก, แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒ“แƒ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒ˜แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ‘แƒแƒขแƒ˜.

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒแƒฎแƒšแƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ”แƒ  แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ‘แƒแƒขแƒ”แƒ‘แƒ˜ แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ“แƒ”แƒ‘แƒ แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒแƒ แƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒ—. แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ›, แƒกแƒ›แƒแƒ แƒขแƒคแƒแƒœแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ‘แƒแƒขแƒ—แƒแƒœ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ˜แƒกแƒแƒก, แƒ™แƒšแƒแƒ•แƒ˜แƒแƒขแƒฃแƒ แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ’แƒแƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒก แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒก.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ แƒ™แƒ•แƒ”แƒ•แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒ•แƒแƒจแƒ”แƒœแƒแƒ— แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ“แƒ˜แƒแƒšแƒแƒ’แƒ˜ แƒ‘แƒแƒขแƒ—แƒแƒœ แƒ“แƒ แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒ—แƒแƒœ.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ