R (పార్ట్ 2)లో టెలిగ్రామ్ బాట్ రాయడం: బాట్‌కు కమాండ్ సపోర్ట్ మరియు మెసేజ్ ఫిల్టర్‌లను జోడించడం

В మునుపటి ప్రచురణ మేము బోట్‌ను ఎలా సృష్టించాలో కనుగొన్నాము, తరగతి యొక్క ఉదాహరణను ప్రారంభించాము Bot మరియు దానిని ఉపయోగించి సందేశాలను పంపే పద్ధతులతో పరిచయం ఏర్పడింది.

ఈ వ్యాసంలో నేను ఈ అంశాన్ని కొనసాగిస్తాను, కాబట్టి చదివిన తర్వాత మాత్రమే ఈ కథనాన్ని చదవడం ప్రారంభించాలని నేను సిఫార్సు చేస్తున్నాను మొదటి భాగం.

ఈసారి మేము మా బోట్‌ను ఎలా పునరుద్ధరించాలో మరియు దానికి కమాండ్ సపోర్ట్‌ను ఎలా జోడించాలో కనుగొంటాము మరియు క్లాస్‌తో కూడా పరిచయం పొందుతాము Updater.

కథనం సమయంలో, మేము అనేక సాధారణ బాట్‌లను వ్రాస్తాము, రెండోది, ఇచ్చిన తేదీ మరియు దేశం కోడ్ ఆధారంగా, ఉత్పత్తి క్యాలెండర్ ప్రకారం ఇచ్చిన దేశంలో ఒక రోజు వారాంతం లేదా పని దినమా అని నిర్ణయిస్తుంది. కానీ, మునుపటిలాగా, ప్యాకేజీ ఇంటర్‌ఫేస్‌తో మీకు పరిచయం చేయడమే వ్యాసం యొక్క ఉద్దేశ్యం telegram.bot మీ స్వంత సమస్యలను పరిష్కరించడానికి.

R (పార్ట్ 2)లో టెలిగ్రామ్ బాట్ రాయడం: బాట్‌కు కమాండ్ సపోర్ట్ మరియు మెసేజ్ ఫిల్టర్‌లను జోడించడం

“R లో టెలిగ్రామ్ బాట్ రాయడం” సిరీస్‌లోని అన్ని కథనాలు

  1. మేము ఒక బోట్‌ను సృష్టించి, టెలిగ్రామ్‌లో సందేశాలను పంపడానికి దాన్ని ఉపయోగిస్తాము
  2. బాట్‌కు కమాండ్ సపోర్ట్ మరియు మెసేజ్ ఫిల్టర్‌లను జోడించండి

కంటెంట్

మీకు డేటా విశ్లేషణపై ఆసక్తి ఉంటే, మీరు నాపై ఆసక్తి కలిగి ఉండవచ్చు టెలిగ్రామ్ и YouTube ఛానెల్‌లు. చాలా కంటెంట్ R భాషకు అంకితం చేయబడింది.

  1. అప్‌డేటర్ క్లాస్
  2. నిర్వహించేవారు - నిర్వహించేవారు
  3. బాట్, కమాండ్ హ్యాండ్లర్‌కు మొదటి ఆదేశాన్ని జోడించండి
  4. టెక్స్ట్ మెసేజ్ ప్రాసెసర్ మరియు ఫిల్టర్లు
  5. పారామితులతో ఆదేశాలను జోడిస్తోంది
  6. బాట్‌ను బ్యాక్‌గ్రౌండ్‌లో రన్ చేయండి
  7. తీర్మానం

అప్‌డేటర్ క్లాస్

Updater మీరు టెలిగ్రామ్ బాట్‌ను అభివృద్ధి చేయడాన్ని సులభతరం చేసే తరగతి మరియు హుడ్ కింద ఉన్న తరగతిని ఉపయోగిస్తుంది Dispetcher. తరగతి కేటాయింపు Updater బాట్ నుండి నవీకరణలను స్వీకరించడం (మునుపటి వ్యాసంలో మేము ఈ ప్రయోజనం కోసం పద్ధతిని ఉపయోగించాము getUpdates()), మరియు వాటిని మరింత బదిలీ చేయండి Dispetcher.

దాని మలుపులో Dispetcher మీరు సృష్టించిన హ్యాండ్లర్‌లను కలిగి ఉంటుంది, అనగా. తరగతి వస్తువులు Handler.

నిర్వహించేవారు - నిర్వహించేవారు

మీరు జోడించే హ్యాండ్లర్‌లతో Dispetcher వివిధ సంఘటనలకు బాట్ ప్రతిచర్యలు. ఈ వ్యాసం వ్రాసే సమయంలో telegram.bot కింది రకాల హ్యాండ్లర్లు జోడించబడ్డాయి:

  • MessageHandler — మెసేజ్ హ్యాండ్లర్
  • కమాండ్ హ్యాండ్లర్ — కమాండ్ హ్యాండ్లర్
  • CallbackQueryHandler — ఇన్‌లైన్ నుండి పంపబడిన కీబోర్డ్‌ల కోసం డేటా హ్యాండ్లర్
  • ErrorHandler — బాట్ నుండి నవీకరణలను అభ్యర్థిస్తున్నప్పుడు ఎర్రర్ హ్యాండ్లర్

బాట్, కమాండ్ హ్యాండ్లర్‌కు మొదటి ఆదేశాన్ని జోడించండి

మీరు ఇంతకు ముందెన్నడూ బాట్‌లను ఉపయోగించకుంటే మరియు కమాండ్ అంటే ఏమిటో తెలియకపోతే, బాట్‌కి కమాండ్‌లను ఫార్వర్డ్ స్లాష్ ఉపయోగించి పంపాలి / ఉపసర్గగా.

మేము సాధారణ ఆదేశాలతో ప్రారంభిస్తాము, అనగా. కమాండ్‌పై హలో చెప్పమని మన బోట్‌కి నేర్పిద్దాం /hi.

కోడ్ 1: హలో చెప్పమని బోట్‌కి బోధించడం

library(telegram.bot)

# создаём экземпляр класса Updater
updater <- Updater('ТОКЕН ВАШЕГО БОТА')

# Пишем метод для приветсвия
say_hello <- function(bot, update) {

  # Имя пользователя с которым надо поздароваться
  user_name <- update$message$from$first_name

  # Отправка приветственного сообщения
  bot$sendMessage(update$message$chat_id, 
                  text = paste0("Моё почтение, ", user_name, "!"), 
                  parse_mode = "Markdown")

}

# создаём обработчик 
hi_hendler <- CommandHandler('hi', say_hello)

# добаляем обработчик в диспетчер
updater <- updater + hi_hendler

# запускаем бота
updater$start_polling()

దీని ద్వారా బోట్‌ను సృష్టించేటప్పుడు మీరు అందుకున్న నిజమైన టోకెన్‌తో 'మీ బోట్ టోకెన్'ని భర్తీ చేసిన తర్వాత ఎగువ కోడ్ ఉదాహరణను అమలు చేయండి బోట్ఫదర్ (నేను బోట్‌ను సృష్టించడం గురించి మాట్లాడాను మొదటి వ్యాసం).

పద్ధతి start_polling() తరగతి Updater, ఇది కోడ్ చివరిలో ఉపయోగించబడుతుంది, బోట్ నుండి అప్‌డేట్‌లను అభ్యర్థించడం మరియు ప్రాసెస్ చేయడం యొక్క అంతులేని లూప్‌ను ప్రారంభిస్తుంది.

ఇప్పుడు టెలిగ్రామ్‌ని తెరిచి, మొదటి ఆదేశాన్ని మన బోట్‌కి వ్రాస్దాం /hi.

R (పార్ట్ 2)లో టెలిగ్రామ్ బాట్ రాయడం: బాట్‌కు కమాండ్ సపోర్ట్ మరియు మెసేజ్ ఫిల్టర్‌లను జోడించడం

ఇప్పుడు మన బోట్ ఆదేశాన్ని అర్థం చేసుకుంది /hi, మరియు మమ్మల్ని ఎలా పలకరించాలో తెలుసు.

క్రమపద్ధతిలో, అటువంటి సాధారణ బోట్‌ను నిర్మించే ప్రక్రియను ఈ క్రింది విధంగా చిత్రీకరించవచ్చు.

R (పార్ట్ 2)లో టెలిగ్రామ్ బాట్ రాయడం: బాట్‌కు కమాండ్ సపోర్ట్ మరియు మెసేజ్ ఫిల్టర్‌లను జోడించడం

  1. తరగతి యొక్క ఉదాహరణను సృష్టించండి Updater;
  2. మేము పద్ధతులను సృష్టిస్తాము, అనగా. మా బోట్ చేసే విధులు. కోడ్ ఉదాహరణలో ఇది ఒక ఫంక్షన్ say_hello(). మీరు బోట్ మెథడ్స్‌గా ఉపయోగించే ఫంక్షన్‌లు తప్పనిసరిగా రెండు అవసరమైన ఆర్గ్యుమెంట్‌లను కలిగి ఉండాలి - బాట్ и నవీకరణ, మరియు ఒక ఐచ్ఛికం - వాదనల. వాదన బాట్, ఇది మీ బాట్, దీని సహాయంతో మీరు సందేశాలకు ప్రత్యుత్తరం ఇవ్వవచ్చు, సందేశాలను పంపవచ్చు లేదా బోట్‌కు అందుబాటులో ఉన్న ఏవైనా ఇతర పద్ధతులను ఉపయోగించవచ్చు. వాదన నవీకరణ ఇది వినియోగదారు నుండి బోట్ పొందింది, వాస్తవానికి, మేము పద్ధతిని ఉపయోగించి మొదటి వ్యాసంలో అందుకున్నాము getUpdates(). వాదన వాదనల కమాండ్‌తో పాటు వినియోగదారు పంపిన అదనపు డేటాను ప్రాసెస్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, మేము కొంచెం తర్వాత ఈ అంశానికి తిరిగి వస్తాము;
  3. మేము హ్యాండ్లర్లను సృష్టిస్తాము, అనగా. మేము కొన్ని వినియోగదారు చర్యలను మునుపటి దశలో సృష్టించిన పద్ధతులతో అనుబంధిస్తాము. ముఖ్యంగా, హ్యాండ్లర్ అనేది ఒక ట్రిగ్గర్, ఇది కొన్ని బాట్ ఫంక్షన్‌ని పిలిచే ఈవెంట్. మా ఉదాహరణలో, అటువంటి ట్రిగ్గర్ ఆదేశాన్ని పంపుతోంది /hi, మరియు బృందంచే అమలు చేయబడుతుంది hi_hendler <- CommandHandler('hi', say_hello). మొదటి ఫంక్షన్ వాదన CommandHandler() మా విషయంలో ఆదేశాన్ని పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది hi, దీనికి బోట్ ప్రతిస్పందిస్తుంది. రెండవ వాదన మీరు బాట్ పద్ధతిని పేర్కొనడానికి అనుమతిస్తుంది, మేము పద్ధతిని పిలుస్తాము say_hello, మొదటి ఆర్గ్యుమెంట్‌లో పేర్కొన్న ఆదేశాన్ని వినియోగదారు కాల్ చేస్తే ఇది అమలు చేయబడుతుంది;
  4. తరువాత, మేము సృష్టించిన హ్యాండ్లర్‌ను మా తరగతి ఉదాహరణ యొక్క డిస్పాచర్‌కు జోడిస్తాము Updater. మీరు హ్యాండ్లర్‌లను అనేక విధాలుగా జోడించవచ్చు; పై ఉదాహరణలో, నేను గుర్తును ఉపయోగించి సరళమైనదాన్ని ఉపయోగించాను +, అనగా updater <- updater + hi_hendler. అదే పద్ధతిని ఉపయోగించి చేయవచ్చు add_handler(), ఇది తరగతికి చెందినది Dispatcher, మీరు ఈ పద్ధతిని ఇలా కనుగొనవచ్చు: updater$dispatcher$add_handler();
  5. ఆదేశాన్ని ఉపయోగించి బోట్‌ను ప్రారంభించండి start_polling().

టెక్స్ట్ మెసేజ్ ప్రాసెసర్ మరియు ఫిల్టర్లు

బాట్‌కు ఆదేశాలను ఎలా పంపాలో మేము కనుగొన్నాము, కానీ కొన్నిసార్లు మనకు కమాండ్‌లకు మాత్రమే కాకుండా కొన్ని సాధారణ వచన సందేశాలకు కూడా ప్రతిస్పందించడానికి బోట్ అవసరం. దీన్ని చేయడానికి మీరు మెసేజ్ హ్యాండ్లర్‌లను ఉపయోగించాలి - మెసేజ్ హ్యాండ్లర్.

సాధారణ మెసేజ్ హ్యాండ్లర్ ఖచ్చితంగా అన్ని ఇన్‌కమింగ్ సందేశాలకు ప్రతిస్పందిస్తుంది. అందువల్ల, మెసేజ్ హ్యాండ్లర్లు తరచుగా ఫిల్టర్‌లతో కలిసి ఉపయోగించబడతాయి. కమాండ్‌పై మాత్రమే కాకుండా హలో చెప్పమని బోట్‌కు నేర్పిద్దాం /hi, కానీ బోట్‌కు పంపబడిన సందేశంలో కింది పదాలలో ఒకటి కనిపించినప్పుడల్లా: హలో, హలో, సెల్యూట్, హై, బోంజోర్.

ప్రస్తుతానికి మేము ఏ కొత్త పద్ధతులను వ్రాయము, ఎందుకంటే... బోట్ మమ్మల్ని పలకరించే పద్ధతిని మేము ఇప్పటికే కలిగి ఉన్నాము. మనం చేయాల్సిందల్లా అవసరమైన ఫిల్టర్ మరియు మెసేజ్ హ్యాండ్లర్‌ని సృష్టించడం.

కోడ్ 2: టెక్స్ట్ మెసేజ్ హ్యాండ్లర్ మరియు ఫిల్టర్‌ని జోడించండి

library(telegram.bot)

# создаём экземпляр класса Updater
updater <- Updater('ТОКЕН ВАШЕГО БОТА')

# Пишем метод для приветсвия
## команда приветвия
say_hello <- function(bot, update) {

  # Имя пользователя с которым надо поздароваться
  user_name <- update$message$from$first_name

  # Отправляем приветсвенное сообщение
  bot$sendMessage(update$message$chat_id, 
                  text = paste0("Моё почтение, ", user_name, "!"),
                  parse_mode = "Markdown",
                  reply_to_message_id = update$message$message_id)

}

# создаём фильтры
MessageFilters$hi <- BaseFilter(function(message) {

  # проверяем, встречается ли в тексте сообщения слова: привет, здравствуй, салют, хай, бонжур
  grepl(x           = message$text, 
        pattern     = 'привет|здравствуй|салют|хай|бонжур',
        ignore.case = TRUE)
  }
)

# создаём обработчик 
hi_hendler <- CommandHandler('hi', say_hello) # обработчик команды hi
hi_txt_hnd <- MessageHandler(say_hello, filters = MessageFilters$hi)

# добаляем обработчики в диспетчер
updater <- updater + 
             hi_hendler +
             hi_txt_hnd

# запускаем бота
updater$start_polling()

దీని ద్వారా బోట్‌ను సృష్టించేటప్పుడు మీరు అందుకున్న నిజమైన టోకెన్‌తో 'మీ బోట్ టోకెన్'ని భర్తీ చేసిన తర్వాత ఎగువ కోడ్ ఉదాహరణను అమలు చేయండి బోట్ఫదర్ (నేను బోట్‌ను సృష్టించడం గురించి మాట్లాడాను మొదటి వ్యాసం).

ఇప్పుడు ముందుగా జాబితా చేయబడిన గ్రీటింగ్ పదాలను కలిగి ఉన్న అనేక సందేశాలను బోట్‌కు పంపడానికి ప్రయత్నిద్దాం:
R (పార్ట్ 2)లో టెలిగ్రామ్ బాట్ రాయడం: బాట్‌కు కమాండ్ సపోర్ట్ మరియు మెసేజ్ ఫిల్టర్‌లను జోడించడం

కాబట్టి, మొదటగా, మేము బోట్‌కి హలో చెప్పడమే కాదు, గ్రీటింగ్‌కి ప్రతిస్పందించడం నేర్పించాము. మేము వాదనను ఉపయోగించి దీన్ని చేసాము మెసేజ్_ఐడికి_ప్రత్యుత్తరం ఇవ్వండి, ఇది పద్ధతిలో అందుబాటులో ఉంది sendMessage(), దీనిలో మీరు ప్రతిస్పందించాలనుకుంటున్న సందేశం యొక్క idని బదిలీ చేయాలి. మీరు మెసేజ్ ఐడిని ఇలా పొందవచ్చు: update$message$message_id.

కానీ మేము చేసిన ప్రధాన విషయం ఏమిటంటే, ఫంక్షన్‌ని ఉపయోగించి బోట్‌కు ఫిల్టర్‌ను జోడించడం BaseFilter():

# создаём фильтры
MessageFilters$hi <- BaseFilter( 

  # анонимная фильтрующая функция
  function(message) {

    # проверяем, встречается ли в тексте сообщения слова приветствия
    grepl(x           = message$text, 
          pattern     = 'привет|здравствуй|салют|хай|бонжур',
          ignore.case = TRUE)
  }

)

మీరు గమనించినట్లుగా, వస్తువుకు ఫిల్టర్‌లను జోడించాలి మెసేజ్ ఫిల్టర్‌లు, ఇది ప్రారంభంలో ఇప్పటికే ఒక చిన్న సెట్ రెడీమేడ్ ఫిల్టర్‌లను కలిగి ఉంది. మా ఉదాహరణలో, వస్తువుకు మెసేజ్ ఫిల్టర్‌లు మేము ఒక మూలకాన్ని జోడించాము hi, ఇది కొత్త ఫిల్టర్.

పనిచేయడానికి BaseFilter() మీరు ఫిల్టర్ ఫంక్షన్‌ను పాస్ చేయాలి. ముఖ్యంగా, ఫిల్టర్ అనేది మెసేజ్ ఇన్‌స్టాన్స్ మరియు రిటర్న్‌లను స్వీకరించే ఫంక్షన్ మాత్రమే TRUE లేదా FALSE. మా ఉదాహరణలో, మేము ప్రాథమిక ఫంక్షన్‌ని ఉపయోగించి ఒక సాధారణ ఫంక్షన్‌ని వ్రాసాము grepl() సందేశ వచనాన్ని తనిఖీ చేస్తుంది మరియు అది సాధారణ వ్యక్తీకరణతో సరిపోలితే привет|здравствуй|салют|хай|бонжур తిరిగి TRUE.

తర్వాత మనం మెసేజ్ హ్యాండ్లర్‌ని క్రియేట్ చేస్తాము hi_txt_hnd <- MessageHandler(say_hello, filters = MessageFilters$hi). మొదటి ఫంక్షన్ వాదన MessageHandler() అనేది హ్యాండ్లర్‌ని పిలిచే పద్ధతి, మరియు రెండవ వాదన ఫిల్టర్‌గా పిలవబడేది. మా విషయంలో, ఇది మేము సృష్టించిన ఫిల్టర్ MessageFilters$hi.

బాగా, చివరికి, మేము డిస్పాచర్‌కు సృష్టించిన హ్యాండ్లర్‌ను జోడిస్తాము hi_txt_hnd.

updater <- updater + 
             hi_hendler +
             hi_txt_hnd

నేను పైన వ్రాసినట్లుగా, ప్యాకేజీలో telegram.bot మరియు వస్తువు మెసేజ్ ఫిల్టర్‌లు మీరు ఉపయోగించగల అంతర్నిర్మిత ఫిల్టర్‌ల సెట్ ఇప్పటికే ఉంది:

  • అన్నీ - అన్ని సందేశాలు
  • వచనం - వచన సందేశాలు
  • కమాండ్ - ఆదేశాలు, అనగా. మొదలయ్యే సందేశాలు /
  • ప్రత్యుత్తరం - మరొక సందేశానికి ప్రత్యుత్తరం ఇచ్చే సందేశాలు
  • ఆడియో — ఆడియో ఫైల్‌ని కలిగి ఉన్న సందేశాలు
  • పత్రం - పంపిన పత్రంతో సందేశాలు
  • ఫోటో - పంపిన చిత్రాలతో సందేశాలు
  • స్టిక్కర్ - పంపిన స్టిక్కర్‌తో సందేశాలు
  • వీడియో — వీడియోతో సందేశాలు
  • వాయిస్ - వాయిస్ సందేశాలు
  • పరిచయం - వినియోగదారు టెలిగ్రామ్ కంటెంట్‌ని కలిగి ఉన్న సందేశాలు
  • స్థానం - జియోలొకేషన్‌తో సందేశాలు
  • వేదిక - ఫార్వార్డ్ చేసిన సందేశాలు
  • ఆట - ఆటలు

మీరు ఒక హ్యాండ్లర్‌లో కొన్ని ఫిల్టర్‌లను కలపాలనుకుంటే గుర్తును ఉపయోగించండి | - తార్కికంగా OR, మరియు సంతకం చేయండి & లాజికల్ గా И. ఉదాహరణకు, బాట్ వీడియో, ఇమేజ్ లేదా డాక్యుమెంట్‌ని స్వీకరించినప్పుడు అదే పద్ధతిని కాల్ చేయాలని మీరు కోరుకుంటే, మెసేజ్ హ్యాండ్లర్‌ను సృష్టించడానికి క్రింది ఉదాహరణను ఉపయోగించండి:

handler <- MessageHandler(callback, 
  MessageFilters$video | MessageFilters$photo | MessageFilters$document
)

పారామితులతో ఆదేశాలను జోడిస్తోంది

కమాండ్‌లు అంటే ఏమిటో, వాటిని ఎలా సృష్టించాలో మరియు కావలసిన ఆదేశాన్ని అమలు చేయడానికి బాట్‌ను ఎలా బలవంతం చేయాలో మాకు ఇప్పటికే తెలుసు. కానీ కొన్ని సందర్భాల్లో, కమాండ్ పేరుతో పాటు, దానిని అమలు చేయడానికి మనం కొంత డేటాను పాస్ చేయాలి.

ఇచ్చిన తేదీ మరియు దేశాన్ని అందించిన, ఉత్పత్తి క్యాలెండర్ నుండి రోజు రకాన్ని మీకు అందించే బాట్ యొక్క ఉదాహరణ క్రింద ఉంది.

దిగువన ఉన్న బాట్ ఉత్పత్తి క్యాలెండర్ APIని ఉపయోగిస్తుంది isdayoff.ru.

కోడ్ 3: తేదీ మరియు దేశం వారీగా నివేదించే బోట్

library(telegram.bot)

# создаём экземпляр класса Updater
updater <- Updater('1165649194:AAFkDqIzQ6Wq5GV0YU7PmEZcv1gmWIFIB_8')

# Пишем метод для приветсвия
## команда приветвия
check_date <- function(bot, update, args) {

  # входящие данные
  day     <- args[1]  # дата
  country <- args[2]  # страна

  # проверка введённых параметров
  if ( !grepl('\d{4}-\d{2}-\d{2}', day) ) {

    # Send Custom Keyboard
    bot$sendMessage(update$message$chat_id, 
                    text = paste0(day, " - некорреткная дата, введите дату в формате ГГГГ-ММ-ДД"),
                    parse_mode = "Markdown")

  } else {
    day <- as.Date(day)
    # переводим в формат POSIXtl
    y <- format(day, "%Y")
    m <- format(day, "%m")
    d <- format(day, "%d")

  }

  # страна для проверки
  ## проверяем задана ли страна
  ## если не задана устанавливаем ru
  if ( ! country %in% c('ru', 'ua', 'by', 'kz', 'us') ) {

    # Send Custom Keyboard
    bot$sendMessage(update$message$chat_id, 
                    text = paste0(country, " - некорретктный код страны, возможнные значения: ru, by, kz, ua, us. Запрошены данные по России."),
                    parse_mode = "Markdown")

    country <- 'ru'

  }

  # запрос данных из API
  # компоновка HTTP запроса
  url <- paste0("https://isdayoff.ru/api/getdata?",
                "year=",  y, "&",
                "month=", m, "&",
                "day=",   d, "&",
                "cc=",    country, "&",
                "pre=1&",
                "covid=1")

  # получаем ответ
  res <- readLines(url)

  # интрепретация ответа
  out <- switch(res, 
                "0"   = "Рабочий день",
                "1"   = "Нерабочий день",
                "2"   = "Сокращённый рабочий день",
                "4"   = "covid-19",
                "100" = "Ошибка в дате",
                "101" = "Данные не найдены",
                "199" = "Ошибка сервиса")

  # отправляем сообщение
  bot$sendMessage(update$message$chat_id, 
                  text = paste0(day, " - ", out),
                  parse_mode = "Markdown")

}

# создаём обработчик 
date_hendler <- CommandHandler('check_date', check_date, pass_args = TRUE)

# добаляем обработчик в диспетчер
updater <- updater + date_hendler

# запускаем бота
updater$start_polling()

దీని ద్వారా బోట్‌ను సృష్టించేటప్పుడు మీరు అందుకున్న నిజమైన టోకెన్‌తో 'మీ బోట్ టోకెన్'ని భర్తీ చేసిన తర్వాత ఎగువ కోడ్ ఉదాహరణను అమలు చేయండి బోట్ఫదర్ (నేను బోట్‌ను సృష్టించడం గురించి మాట్లాడాను మొదటి వ్యాసం).

మేము దాని ఆర్సెనల్‌లో ఒకే ఒక పద్ధతిని కలిగి ఉన్న బోట్‌ను సృష్టించాము check_date, ఈ పద్ధతిని అదే పేరుతో ఆదేశం ద్వారా పిలుస్తారు.

కానీ, కమాండ్ పేరుకు అదనంగా, ఈ పద్ధతికి మీరు రెండు పారామితులను నమోదు చేయాలి, దేశం కోడ్ మరియు తేదీ. తర్వాత, అధికారిక ఉత్పత్తి క్యాలెండర్ ప్రకారం పేర్కొన్న దేశంలో ఇచ్చిన రోజు వారాంతం, కుదించబడిన రోజు లేదా పని దినమా అని బోట్ తనిఖీ చేస్తుంది.

కమాండ్‌తో పాటు అదనపు పారామితులను ఆమోదించడానికి మేము సృష్టించే పద్ధతి కోసం, ఆర్గ్యుమెంట్‌ని ఉపయోగించండి pass_args = TRUE ఫంక్షన్ లో CommandHandler(), మరియు ఒక పద్ధతిని సృష్టించేటప్పుడు, అవసరమైన వాదనలకు అదనంగా బాట్, నవీకరణ ఒక ఐచ్ఛికాన్ని సృష్టించండి - వాదనల. ఈ విధంగా సృష్టించబడిన పద్ధతి కమాండ్ పేరు తర్వాత మీరు బోట్‌కు పంపే పారామితులను అంగీకరిస్తుంది. పారామితులు తప్పనిసరిగా ఖాళీతో వేరు చేయబడాలి; అవి టెక్స్ట్ వెక్టర్‌గా పద్ధతికి పంపబడతాయి.

మన బోట్‌ని ప్రారంభించి, పరీక్షించుకుందాం.

R (పార్ట్ 2)లో టెలిగ్రామ్ బాట్ రాయడం: బాట్‌కు కమాండ్ సపోర్ట్ మరియు మెసేజ్ ఫిల్టర్‌లను జోడించడం

బాట్‌ను బ్యాక్‌గ్రౌండ్‌లో రన్ చేయండి

బాట్‌ను బ్యాక్‌గ్రౌండ్‌లో ప్రారంభించడం మనం పూర్తి చేయాల్సిన చివరి దశ.

దీన్ని చేయడానికి, దిగువ వివరించిన అల్గోరిథంను అనుసరించండి:

  1. బాట్ కోడ్‌ను R పొడిగింపుతో ఫైల్‌కి సేవ్ చేయండి. RStudioలో పని చేస్తున్నప్పుడు, ఇది మెను ద్వారా జరుగుతుంది ఫైలు, జట్టు ఇలా సేవ్ చేయండి ....
  2. బిన్ ఫోల్డర్‌కు పాత్‌ను జోడించండి, ఇది మీరు R భాషని ఇన్‌స్టాల్ చేసిన ఫోల్డర్‌లో పాత్ వేరియబుల్, సూచనలకు జోడించబడుతుంది. ఇక్కడ.
  3. 1 పంక్తిని వ్రాసే సాధారణ టెక్స్ట్ ఫైల్‌ను సృష్టించండి: R CMD BATCH C:UsersAlseyDocumentsmy_bot.R... బదులుగా C:UsersAlseyDocumentsmy_bot.R మీ బాట్ స్క్రిప్ట్‌కు మార్గాన్ని వ్రాయండి. అదే సమయంలో, దారి పొడవునా సిరిలిక్ అక్షరాలు లేదా ఖాళీలు లేవు, ఎందుకంటే ఇది బోట్‌ను నడుపుతున్నప్పుడు సమస్యలను కలిగిస్తుంది. దీన్ని సేవ్ చేయండి మరియు దాని పొడిగింపును భర్తీ చేయండి టిఎక్స్ టిబ్యాట్.
  4. టాస్క్ షెడ్యూలర్‌ను తెరవండి Windowsదీన్ని చేయడానికి చాలా మార్గాలు ఉన్నాయి, ఉదాహరణకు, ఏదైనా ఫోల్డర్‌ను తెరిచి చిరునామాను నమోదు చేయండి. %windir%system32taskschd.msc /s. ఇతర ప్రయోగ పద్ధతులను కనుగొనవచ్చు ఇక్కడ.
  5. షెడ్యూలర్ యొక్క కుడి ఎగువ మెనులో, "టాస్క్‌ని సృష్టించు..." క్లిక్ చేయండి.
  6. "జనరల్" ట్యాబ్‌లో, మీ టాస్క్‌కి అనుకూల పేరుని ఇవ్వండి మరియు "అందరి వినియోగదారుల కోసం రన్" స్థితికి మారండి.
  7. "చర్యలు" ట్యాబ్‌కు వెళ్లి, "సృష్టించు" క్లిక్ చేయండి. "ప్రోగ్రామ్ లేదా స్క్రిప్ట్" ఫీల్డ్‌లో, "బ్రౌజ్" క్లిక్ చేసి, రెండవ దశలో సృష్టించిన దాన్ని కనుగొనండి బ్యాట్ ఫైల్ మరియు సరి క్లిక్ చేయండి.
  8. సరే క్లిక్ చేయండి మరియు అవసరమైతే, మీ ఆపరేటింగ్ సిస్టమ్ ఖాతా కోసం పాస్‌వర్డ్‌ను నమోదు చేయండి.
  9. షెడ్యూలర్‌లో సృష్టించిన పనిని కనుగొని, దాన్ని ఎంచుకుని, దిగువ కుడి మూలలో ఉన్న "రన్" బటన్‌ను క్లిక్ చేయండి.

మా బాట్ బ్యాక్‌గ్రౌండ్‌లో నడుస్తుంది మరియు మీరు టాస్క్‌ను ఆపివేసే వరకు లేదా అది ప్రారంభించబడిన మీ PC లేదా సర్వర్‌ని ఆఫ్ చేసే వరకు పని చేస్తుంది.

తీర్మానం

ఈ ఆర్టికల్లో, సందేశాలను పంపడమే కాకుండా, ఇన్కమింగ్ సందేశాలు మరియు ఆదేశాలకు ప్రతిస్పందించగల పూర్తి స్థాయి బోట్ను ఎలా వ్రాయాలో మేము కనుగొన్నాము. పొందిన జ్ఞానం మీ చాలా సమస్యలను పరిష్కరించడానికి ఇప్పటికే సరిపోతుంది.

మరింత అనుకూలమైన పని కోసం బాట్‌కు కీబోర్డ్‌ను ఎలా జోడించాలో తదుపరి కథనం మాట్లాడుతుంది.

నా సబ్స్క్రయిబ్ టెలిగ్రామ్ и YouTube ఛానెల్‌లు.

మూలం: www.habr.com

DDoS రక్షణ, VPS VDS సర్వర్‌లతో సైట్‌ల కోసం నమ్మకమైన హోస్టింగ్‌ను కొనుగోలు చేయండి 🔥 DDoS రక్షణతో కూడిన నమ్మకమైన వెబ్‌సైట్ హోస్టింగ్, VPS VDS సర్వర్‌లను కొనండి | ProHoster