విషయ సూచిక
- దశ 0: టెలిగ్రామ్ బాట్ల API గురించి సైద్ధాంతిక నేపథ్యం
- దశ 1: మార్పిడి రేటు అభ్యర్థనలను అమలు చేయడం
- దశ 2: @BotFatherతో టెలిగ్రామ్ బాట్ను సృష్టించండి
- దశ 3: బాట్ను సెటప్ చేయడం మరియు ప్రారంభించడం
- దశ 4: కమాండ్ హ్యాండ్లర్ను / స్టార్ట్ చేయండి
- దశ 5: / హెల్ప్ కమాండ్ హ్యాండ్లర్ను సృష్టించండి
- దశ 6: / ఎక్స్ఛేంజ్ కమాండ్ హ్యాండ్లర్ను జోడించడం
- దశ 7: అంతర్నిర్మిత కీబోర్డ్ బటన్ల కోసం హ్యాండ్లర్ను వ్రాయడం
- దశ 8: అప్డేట్ బటన్ హ్యాండ్లర్ని అమలు చేస్తోంది
- దశ 9: ఎంబెడెడ్ మోడ్ అమలు
- ముగింపు
టెలిగ్రామ్లోని బాట్లు ప్రేక్షకులతో సంబంధాన్ని ఏర్పరచుకోవడానికి లేదా గతంలో మాన్యువల్గా నిర్వహించాల్సిన చర్యలను సులభతరం చేయడానికి సహాయపడే ప్రోగ్రామ్లు. ఈ ప్రోగ్రామ్లు మెసెంజర్ ప్లాట్ఫారమ్ కోసం ప్రత్యేకంగా వ్రాయబడ్డాయి. బాట్లు ఈ విధంగా పని చేస్తాయి: వినియోగదారు ఇన్పుట్ లైన్ ద్వారా ఆదేశాన్ని పంపుతారు మరియు సిస్టమ్ టెక్స్ట్ లేదా ఇంటరాక్టివ్ సందేశంతో ప్రతిస్పందిస్తుంది. కొన్నిసార్లు ప్రోగ్రామ్ నిజమైన వ్యక్తి యొక్క చర్యలను కూడా అనుకరిస్తుంది - అటువంటి బోట్ కస్టమర్లలో మరింత నమ్మకాన్ని ప్రేరేపిస్తుంది.
వినియోగదారులకు ఆటోమేటిక్ సహాయం కోసం అనేక రకాల వ్యవస్థలు ఉన్నాయి. కొన్ని బాట్లు కస్టమర్లతో కమ్యూనికేట్ చేస్తాయి, మరికొన్ని క్రమం తప్పకుండా సమాచారాన్ని అందిస్తాయి. ప్రోగ్రామ్లను రకాలుగా స్పష్టంగా విభజించడం అసాధ్యం - డెవలపర్లు తరచుగా ఒక బోట్లో అనేక విధులను మిళితం చేస్తారు.
మీరు 9 దశల్లో ఆన్-స్క్రీన్ బటన్ల రూపంలో ఇంటరాక్టివ్ ఎలిమెంట్లతో టెలిగ్రామ్ కోసం ఒక సాధారణ బాట్ను వ్రాయవచ్చు. వాటిలో ప్రతి ఒక్కటి వివరంగా చూద్దాం మరియు కొన్ని ప్రశ్నలకు సమాధానమివ్వండి:
- బాట్ను ఎలా ప్రారంభించాలి;
- ఒకటి లేదా అంతకంటే ఎక్కువ బటన్ల నుండి అంతర్నిర్మిత కీబోర్డ్ను ఎలా నమోదు చేయాలి;
- కావలసిన ఫంక్షన్ల కోసం బటన్లను ఎలా ప్రోగ్రామ్ చేయాలి;
- ఇన్లైన్ మోడ్ అంటే ఏమిటి మరియు ఇప్పటికే ఉన్న బోట్ కోసం దీన్ని ఎలా సెటప్ చేయాలి.
దశ 0: టెలిగ్రామ్ బాట్ల API గురించి సైద్ధాంతిక నేపథ్యం
టెలిగ్రామ్ బాట్లను రూపొందించడానికి ఉపయోగించే ప్రధాన సాధనం HTML అప్లికేషన్ ప్రోగ్రామింగ్ ఇంటర్ఫేస్ లేదా HTML API. ఈ మూలకం సందర్శకుల అభ్యర్థనలను అంగీకరిస్తుంది మరియు సమాచారం రూపంలో ప్రతిస్పందనలను పంపుతుంది. రెడీమేడ్ డిజైన్లు ప్రోగ్రామ్లో పనిని సులభతరం చేస్తాయి. టెలిగ్రామ్ కోసం బాట్ రాయడానికి, మీరు ఈ ఇమెయిల్ చిరునామాను ఉపయోగించాలి: https://api.telegram.org/bot
బోట్ యొక్క సరైన పనితీరు కోసం, ఒక టోకెన్ కూడా అవసరం - ప్రోగ్రామ్ను రక్షించే మరియు విశ్వసనీయ డెవలపర్లకు యాక్సెస్ను తెరిచే అక్షరాల కలయిక. ప్రతి టోకెన్ ప్రత్యేకమైనది. సృష్టిపై స్ట్రింగ్ బోట్కు కేటాయించబడుతుంది. పద్ధతులు భిన్నంగా ఉండవచ్చు: getUpdates, getChat మరియు ఇతరులు. డెవలపర్లు బోట్ నుండి ఏ అల్గారిథమ్ను ఆశిస్తున్నారనే దానిపై పద్ధతి ఎంపిక ఆధారపడి ఉంటుంది. టోకెన్ ఉదాహరణ:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
బాట్లు GET మరియు POST అభ్యర్థనలను ఉపయోగిస్తాయి. మెథడ్ పారామితులు తరచుగా అనుబంధంగా ఉండాలి - ఉదాహరణకు, sendMessage పద్ధతిలో చాట్ ఐడి మరియు కొంత వచనాన్ని పంపవలసి ఉంటుంది. పద్ధతి మెరుగుదల కోసం పారామితులను అప్లికేషన్/x-www-form-urlencoded లేదా అప్లికేషన్-json ద్వారా URL ప్రశ్న స్ట్రింగ్గా పాస్ చేయవచ్చు. ఫైల్లను డౌన్లోడ్ చేయడానికి ఈ పద్ధతులు తగినవి కావు. UTF-8 ఎన్కోడింగ్ కూడా అవసరం. APIకి అభ్యర్థనను పంపడం ద్వారా, మీరు JSON ఆకృతిలో ఫలితాన్ని పొందవచ్చు. getME పద్ధతి ద్వారా సమాచారాన్ని తిరిగి పొందేందుకు ప్రోగ్రామ్ యొక్క ప్రతిస్పందనను పరిశీలించండి:
https://api.telegram.org/bot పొందండి/getMe{ సరే: నిజం, ఫలితం: { id: 231757398, మొదటి_పేరు: "ఎక్స్ఛేంజ్ రేట్ బాట్", వినియోగదారు పేరు: "exchangetestbot" } }
ఉంటే ఫలితం లభిస్తుంది ok సమానం నిజమైన. లేకపోతే, సిస్టమ్ లోపాన్ని సూచిస్తుంది.
బాట్లలో అనుకూల సందేశాలను పొందడానికి రెండు మార్గాలు ఉన్నాయి. రెండు పద్ధతులు ప్రభావవంతంగా ఉంటాయి, కానీ వివిధ సందర్భాల్లో అనుకూలంగా ఉంటాయి. సందేశాలను పొందడానికి, మీరు getUpdates పద్ధతితో మాన్యువల్గా అభ్యర్థనను వ్రాయవచ్చు - ప్రోగ్రామ్ స్క్రీన్పై అప్డేట్ డేటా శ్రేణిని ప్రదర్శిస్తుంది. అభ్యర్థనలు క్రమం తప్పకుండా పంపబడాలి, ప్రతి శ్రేణిని విశ్లేషించిన తర్వాత, పంపడం పునరావృతమవుతుంది. ఆఫ్సెట్ అనేది తనిఖీ చేయబడిన వస్తువులు మళ్లీ కనిపించకుండా నిరోధించడానికి కొత్త ఫలితాన్ని లోడ్ చేయడానికి ముందు దాటవేయబడిన రికార్డుల సంఖ్యను నిర్ణయించే పరామితి. గెట్అప్డేట్స్ పద్ధతి యొక్క ప్రయోజనాలు ఈ క్రింది విధంగా అమలులోకి వస్తాయి:
- HTTPSని కాన్ఫిగర్ చేయడానికి మార్గం లేదు;
- సంక్లిష్ట స్క్రిప్టింగ్ భాషలు ఉపయోగించబడతాయి;
- బోట్ సర్వర్ కాలానుగుణంగా మారుతుంది;
- బోట్ వినియోగదారులతో లోడ్ చేయబడింది.
వినియోగదారు సందేశాలను స్వీకరించడానికి వ్రాయగలిగే రెండవ పద్ధతి setWebhook. ఇది ఒకసారి ఉపయోగించబడుతుంది, నిరంతరం కొత్త అభ్యర్థనలను పంపవలసిన అవసరం లేదు. వెబ్హూక్ పేర్కొన్న URLకి డేటా అప్డేట్లను పంపుతుంది. ఈ పద్ధతికి SSL ప్రమాణపత్రం అవసరం. ఈ సందర్భాలలో Webhook ఉపయోగకరంగా ఉంటుంది:
- వెబ్ ప్రోగ్రామింగ్ భాషలు ఉపయోగించబడతాయి;
- బోట్ ఓవర్లోడ్ చేయబడలేదు, చాలా మంది వినియోగదారులు లేరు;
- సర్వర్ మారదు, ప్రోగ్రామ్ చాలా కాలం పాటు అదే సర్వర్లో ఉంటుంది.
తదుపరి సూచనలలో, మేము getUpdatesని ఉపయోగిస్తాము.
@BotFather టెలిగ్రామ్ సేవ చాట్ బాట్లను రూపొందించడానికి రూపొందించబడింది. ఈ సిస్టమ్ ద్వారా ప్రాథమిక సెట్టింగ్లు కూడా సెట్ చేయబడ్డాయి - వివరణను రూపొందించడానికి, ప్రొఫైల్ ఫోటోను ఉంచడానికి, మద్దతు సాధనాలను జోడించడానికి BotFather మీకు సహాయం చేస్తుంది. లైబ్రరీలు - టెలిగ్రామ్ బాట్ల కోసం HTML అభ్యర్థనల సెట్లు - ఇంటర్నెట్లో అందుబాటులో ఉన్నాయి, వాటిలో చాలా ఉన్నాయి. ఉదాహరణ ప్రోగ్రామ్ను సృష్టించేటప్పుడు, pyTelegramBotApi ఉపయోగించబడింది.
దశ 1: మార్పిడి రేటు అభ్యర్థనలను అమలు చేయడం
మొదట మీరు ప్రశ్నలను ప్రదర్శించే కోడ్ను వ్రాయాలి. మేము PrivatBank APIని వ్రాసేటప్పుడు ఉపయోగిస్తాము, దానికి లింక్ క్రింద ఉంది: https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5. మీరు మీ కోడ్లో ఈ పద్ధతులను ఉపయోగించాలి:
- load_exchange – మార్పిడి రేట్లను కనుగొని ఎన్కోడ్ చేసిన సమాచారాన్ని ప్రదర్శిస్తుంది;
- get_exchange – నిర్దిష్ట కరెన్సీకి సంబంధించిన డేటాను ప్రదర్శిస్తుంది;
- get_exchanges - నమూనా ప్రకారం కరెన్సీల జాబితాను చూపుతుంది.
ఫలితంగా, pb.py ఫైల్లోని కోడ్ ఇలా కనిపిస్తుంది:
దిగుమతి రీ దిగుమతి అభ్యర్థనలు దిగుమతి json URL = 'https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5' def load_exchange(): json.loads(requests.get(URL).text) def get_exchange(ccy_key) ): load_exchangeలో exc కోసం(): ccy_key == exc['ccy']: రిటర్న్ exc రిటర్న్ ఫాల్స్ డెఫ్ get_exchanges(ccy_pattern): result = [] ccy_pattern = re.escape(ccy_pattern) + '.*' for exc in load_exchange(): re.match(ccy_pattern, exc['ccy'], re.IGNORECASE) ఏదీ కానట్లయితే: result.append(exc) రిటర్న్ రిజల్ట్
ప్రోగ్రామ్ పేర్కొన్న అభ్యర్థనలకు క్రింది ప్రతిస్పందనను జారీ చేయగలదు:
[ { ccy:"USD", base_ccy:"UAH", కొనుగోలు:"25.90000", విక్రయం:"26.25000" }, {ccy:"EUR", base_ccy:"UAH", కొనుగోలు:"29.10000", విక్రయం:"29.85000 " }, { ccy:"RUR", base_ccy:"UAH", కొనుగోలు:"0.37800", విక్రయం:"0.41800" }, {ccy:"BTC", base_ccy:"USD", కొనుగోలు:"11220.0384", విక్రయం: "12401.0950" } ]
దశ 2: @BotFatherతో టెలిగ్రామ్ బాట్ను సృష్టించండి
మీరు @BotFather సేవను ఉపయోగించి సందేశాలను స్వీకరించడానికి మరియు వాటికి ప్రతిస్పందించడానికి ప్రోగ్రామ్ను సృష్టించవచ్చు. అతని టెలిగ్రామ్ పేజీకి వెళ్లి / newbot ఆదేశాన్ని నమోదు చేయండి. చాట్లో సూచనలు కనిపిస్తాయి, దీని ప్రకారం మీరు మొదట బోట్ పేరును వ్రాసి, ఆపై దాని చిరునామాను వ్రాయాలి. బాట్ ఖాతా సృష్టించబడినప్పుడు, టోకెన్తో కూడిన స్వాగత సందేశం స్క్రీన్పై కనిపిస్తుంది. తదుపరి కాన్ఫిగరేషన్ కోసం, ఈ ఆదేశాలను ఉపయోగించండి:
- /సెట్ వివరణ - వివరణ;
- / setabouttext – కొత్త బాట్ గురించిన సమాచారం;
- / setuserpic - ప్రొఫైల్ ఫోటో;
- / సెటిన్లైన్ - ఇన్లైన్ మోడ్;
- /setcommands – ఆదేశాల వివరణ.
చివరి కాన్ఫిగరేషన్ దశలో, మేము / సహాయం మరియు / మార్పిడిని వివరిస్తాము. అన్ని దశలు పూర్తయిన తర్వాత, కోడింగ్కు వెళ్లే సమయం వచ్చింది.
దశ 3: బాట్ను సెటప్ చేయడం మరియు ప్రారంభించడం
config.py ఫైల్ని క్రియేట్ చేద్దాం. అందులో, మీరు ప్రత్యేకమైన బోట్ కోడ్ మరియు ప్రోగ్రామ్ సమాచారాన్ని కనుగొనే టైమ్ జోన్ను పేర్కొనాలి.
టోకెన్ = '' # మీ బాట్ యొక్క టోకెన్తో భర్తీ చేయండిTIMEZONE = 'యూరోప్/కీవ్' TIMEZONE_COMMON_NAME = 'కీవ్'
తరువాత, మేము గతంలో వ్రాసిన pb.py, లైబ్రరీలు మరియు ఇతర అవసరమైన భాగాల దిగుమతితో మరొక ఫైల్ను సృష్టిస్తాము. తప్పిపోయిన లైబ్రరీలు ప్యాకేజీ నిర్వహణ వ్యవస్థ (పిప్) నుండి ఇన్స్టాల్ చేయబడ్డాయి.
దిగుమతి టెలిబోటిమ్పోర్ట్ కాన్ఫిగైమ్పోర్ట్ పిబింపోర్ట్ డేట్టైమ్ఇంపోర్ట్ పిట్జిమ్పోర్ట్ జెసోనిమ్పోర్ట్ ట్రేస్బ్యాక్ P_TIMEZONE = pytz.timezone(config.TIMEZONE) TIMEZONE_COMMON_NAME = config.TIMEZONE_COMMON_NAME
బాట్ను సృష్టించడానికి pyTelegramBotApi యొక్క కంటెంట్ని ఉపయోగిస్తాము. కింది కోడ్ని ఉపయోగించి మేము అందుకున్న టోకెన్ను పంపుతాము:
bot = telebot.TeleBot(config.TOKEN) bot.polling(none_stop=True)
none_stop పరామితి అభ్యర్థనలు నిరంతరం పంపబడుతుందని నిర్ధారిస్తుంది. పద్ధతి లోపాల ద్వారా పరామితి యొక్క ఆపరేషన్ ప్రభావితం కాదు.
దశ 4: కమాండ్ హ్యాండ్లర్ను / స్టార్ట్ చేయండి
మునుపటి దశలన్నీ సరిగ్గా జరిగితే, బాట్ పని చేయడం ప్రారంభించింది. ఇది getUpdates పద్ధతిని ఉపయోగిస్తుంది కాబట్టి ప్రోగ్రామ్ క్రమం తప్పకుండా అభ్యర్థనలను రూపొందిస్తుంది. none_stop మూలకంతో లైన్కు ముందు, మనకు /start ఆదేశాన్ని ప్రాసెస్ చేసే కోడ్ ముక్క అవసరం:
@bot.message_handler(commands=['start']) def start_command(message): bot.send_message( message.chat.id, 'Greetings! నేను మీకు ఎక్స్ఛేంజ్ రేట్లు చూపగలను.n' + 'మారకం ధరలను పొందడానికి నొక్కండి / exchange.n' + 'సహాయం పొందడానికి /help నొక్కండి.' )
RџСўРё ఆదేశాలు=['ప్రారంభించు'] సత్యానికి సమానం start_command అంటారు. సందేశంలోని కంటెంట్ అక్కడికి వెళుతుంది. తరువాత, మీరు పంపే ఫంక్షన్ను అమలు చేయాలి_సందేశం ఒక నిర్దిష్ట సందేశానికి సంబంధించి.
దశ 5: / హెల్ప్ కమాండ్ హ్యాండ్లర్ను సృష్టించండి
/help ఆదేశాన్ని బటన్గా అమలు చేయవచ్చు. దానిపై క్లిక్ చేయడం ద్వారా, వినియోగదారు డెవలపర్ యొక్క టెలిగ్రామ్ ఖాతాకు తీసుకెళ్లబడతారు. బటన్కు “డెవలపర్ని అడగండి” వంటి పేరును ఇవ్వండి. send_message పద్ధతి కోసం వినియోగదారుని లింక్కి దారి మళ్లించే reply_markup పరామితిని సెట్ చేయండి. కీబోర్డ్ను (ఇన్లైన్కీబోర్డ్మార్కప్) సృష్టించే పరామితిని కోడ్లో వ్రాద్దాం. మీకు ఒక బటన్ మాత్రమే అవసరం (ఇన్లైన్ కీబోర్డ్ బటన్).
చివరి కమాండ్ హ్యాండ్లర్ కోడ్ ఇలా కనిపిస్తుంది:
@bot.message_handler(commands=['help']) def help_command(message): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.add( telebot.types.InlineKeyboardButton( 'డెవలపర్ని అడగండి', url='సమాధానం профиль' ) ) bot.send_message( message.chat.id, '1) అందుబాటులో ఉన్న కరెన్సీల జాబితాను స్వీకరించడానికి /exchange.n' + '2) నొక్కండి మీకు ఆసక్తి ఉన్న కరెన్సీపై క్లిక్ చేయండి.n' + '3) మీరు మూలం మరియు లక్ష్య కరెన్సీలకు సంబంధించిన సమాచారాన్ని కలిగి ఉన్న సందేశాన్ని అందుకుంటారు, ' + 'కొనుగోలు రేట్లు మరియు అమ్మకాల ధరలు.n' + '4) అభ్యర్థనకు సంబంధించిన ప్రస్తుత సమాచారాన్ని స్వీకరించడానికి “నవీకరణ” క్లిక్ చేయండి. ' + 'బోట్ మునుపటి మరియు ప్రస్తుత మారకపు ధరల మధ్య వ్యత్యాసాన్ని కూడా చూపుతుంది.n' + '5) బోట్ ఇన్లైన్కు మద్దతు ఇస్తుంది. @ టైప్ చేయండిఏదైనా చాట్లో మరియు కరెన్సీ యొక్క మొదటి అక్షరాలు.', reply_markup=keyboard )
టెలిగ్రామ్ చాట్లో కోడ్ చర్య:
దశ 6: / ఎక్స్ఛేంజ్ కమాండ్ హ్యాండ్లర్ను జోడించడం
చాట్లో అందుబాటులో ఉన్న కరెన్సీల చిహ్నాలతో బటన్లను ప్రదర్శించడానికి ఈ దశ అవసరం. ఎంపికలతో కూడిన ఆన్-స్క్రీన్ కీబోర్డ్ తప్పులను నివారించడంలో మీకు సహాయం చేస్తుంది. PrivatBank రూబుల్, డాలర్ మరియు యూరోపై సమాచారాన్ని అందిస్తుంది. InlineKeyboardButton ఎంపిక ఇలా పనిచేస్తుంది:
- వినియోగదారు కావలసిన హోదాతో బటన్పై క్లిక్ చేస్తారు.
- getUpdates ఒక కాల్బ్యాక్ను అందుకుంటుంది (కాల్బ్యాక్ క్వెరీ).
- కీబోర్డ్ నొక్కడం ఎలా నిర్వహించాలో తెలుస్తుంది - నొక్కిన బటన్ గురించి సమాచారం ప్రసారం చేయబడుతుంది.
/ఎక్స్ఛేంజ్ హ్యాండ్లర్ కోడ్:
@bot.message_handler(commands=['exchange']) def exchange_command(message): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton('USD', callback_data='get-USD') ) keyboard.row( telebot.types.InlineKeyboardButton('EUR', callback_data='get-EUR'), telebot.types.InlineKeyboardButton('RUR', callback_data='get-RUR') ) bot.send_message( message.chat .id, 'ఎంపిక చేసుకున్న కరెన్సీపై క్లిక్ చేయండి:', reply_markup=keyboard )
టెలిగ్రామ్లోని కోడ్ ఫలితం:
pyTelegramBot Api ప్యాకేజీ @bot.callback_query_handler డెకరేటర్ ఫంక్షన్ని కలిగి ఉంది. ఈ భాగం కాల్బ్యాక్ను ఫంక్షన్లోకి అనువదించడానికి రూపొందించబడింది - API కాల్ని అన్వ్రాప్ చేస్తుంది మరియు మళ్లీ సృష్టిస్తుంది. ఇది ఇలా వ్రాయబడింది:
@bot.callback_query_handler(func=lambda call: True) def iq_callback(query): data = query.data if data.startswith('get-'): get_ex_callback(query)
get_ex_callback పద్ధతిని కూడా వ్రాద్దాం:
def get_ex_callback(query): bot.answer_callback_query(query.id) send_exchange_result(query.message, query.data[4:])
మరొక ఉపయోగకరమైన పద్ధతి ఉంది - answer_callback_query. ఇది బటన్ను నొక్కడం మరియు స్క్రీన్పై ఫలితాన్ని ప్రదర్శించడం మధ్య లోడ్ను తీసివేయడానికి సహాయపడుతుంది. మీరు కొంత కరెన్సీ కోడ్ మరియు సందేశాన్ని పంపడం ద్వారా send_exchange_queryకి సందేశాన్ని పంపవచ్చు. send_exchange_resultని వ్రాద్దాం:
def send_exchange_result(message, ex_code): bot.send_chat_action(message.chat.id, 'typing') ex = pb.get_exchange(ex_code) bot.send_message( message.chat.id, serialize_ex(ex), reply_markup_ket_update ), parse_mode='HTML' )
చాట్బాట్ బ్యాంక్ నుండి అభ్యర్థన ఫలితాన్ని అందుకుంటుంది API, సందర్శకుడు "సందేశాన్ని టైప్ చేయడం" అనే శాసనాన్ని చూస్తాడు. నిజమైన వ్యక్తి సమాధానం ఇస్తున్నట్లు కనిపిస్తోంది. స్క్రీన్పై అటువంటి సూచికను ప్రదర్శించడానికి, మీరు ఇన్పుట్ స్థితి పంక్తులను జోడించాలి. తరువాత, మేము get_exchangeని ఉపయోగిస్తాము - దాని సహాయంతో, ప్రోగ్రామ్ కరెన్సీ హోదా (రూబుల్స్, యూరోలు లేదా డాలర్లు) అందుకుంటుంది. send_message అదనపు పద్ధతులను ఉపయోగిస్తుంది: serialize_ex కరెన్సీని మరొక ఫార్మాట్కి మారుస్తుంది మరియు get_update_keyboard సాఫ్ట్కీలను సెటప్ చేస్తుంది మరియు సమాచారాన్ని అప్డేట్ చేస్తుంది మరియు ఇతర చాట్లకు కరెన్సీ మార్కెట్ డేటాను పంపుతుంది.
get_update_keyboard కోసం కోడ్ని వ్రాద్దాం. రెండు బటన్లను పేర్కొనాలి - t మరియు e రకం మరియు మార్పిడి కోసం స్టాండ్. షేర్ బటన్ కోసం switch_inline_query అంశం అవసరం కాబట్టి వినియోగదారు అనేక చాట్ల నుండి ఎంచుకోవచ్చు. డాలర్, రూబుల్ లేదా యూరో యొక్క ప్రస్తుత మారకపు రేటును ఎవరికి పంపాలో సందర్శకుడు ఎంచుకోగలుగుతారు.
def get_update_keyboard(ex): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton( 'Update', callback_data=json.dumps({ 't': 'u', 'e': { ' b': ex['buy'], 's': ex['sale'], 'c': ex['ccy'] } ).replace(' ', '') ), telebot.types.InlineKeyboardButton ('షేర్', switch_inline_query=ex['ccy']) ) కీబోర్డ్ రిటర్న్
కొన్నిసార్లు మీరు తక్కువ సమయంలో మారకం రేటు ఎంత మారుతుందో చూడాలి. అప్డేట్ బటన్ కోసం రెండు పద్ధతులను వ్రాద్దాం, తద్వారా వినియోగదారులు కోర్సులను పోల్చి చూడగలరు.
మారకపు రేట్ల మధ్య వ్యత్యాసం డిఫ్ పారామీటర్ ద్వారా సీరియలైజర్కు పంపబడుతుంది.
సూచించిన పద్ధతులు డేటా నవీకరించబడిన తర్వాత మాత్రమే పని చేస్తాయి, అవి కోర్సు యొక్క మొదటి ప్రదర్శనను ప్రభావితం చేయవు.
def serialize_ex(ex_json, diff=ఏదీ లేదు): ఫలితం = '' + ex_json['base_ccy'] + ' -> ' + ex_json['ccy'] + ':nn' + 'కొనుగోలు: ' + ex_json['కొనుగోలు'] తేడా ఉంటే: ఫలితం += ' ' + serialize_exchange_diff(diff['buy_diff']) + 'n' + 'Sell: ' + ex_json['sale'] + ' ' + serialize_exchange_diff(diff['sale_diff']) + 'n' else: result += 'nSell: ' + ex_json['sale'] + 'n' రిటర్న్ ఫలితం def serialize_exchange_diff(diff): result = '' తేడా ఉంటే > 0: ఫలితం = '(' + str(తేడా) + ' " src="https://sworg/images/core/emoji/2.3/svg/2197.svg">" src="https://sworg/images /core/emoji/72x72/2197.png">" src="https://sworg/images/core/emoji/72x72/2197.png">)' ఎలిఫ్ తేడా < 0: ఫలితం = '(' + str(' + str( తేడా)[1:] + ' "src="https://sworg/images/core/emoji/2.3/svg/2198.svg">" src="https://sworg/images/core/emoji/72x72 /2198.png">" src="https://sworg/images/core/emoji/72x72/2198.png">)' రిటర్న్ ఫలితం
సందర్శకుడు డాలర్ మారకపు రేటును తెలుసుకోవాలనుకున్నారని ఊహించండి. మీరు సందేశంలో USDని ఎంచుకుంటే ఏమి జరుగుతుందో ఇక్కడ ఉంది:
దశ 8: అప్డేట్ బటన్ హ్యాండ్లర్ని అమలు చేస్తోంది
అప్డేట్ బటన్తో చర్యలను నిర్వహించడానికి కోడ్ను వ్రాసి, దానికి iq_callback_method భాగాన్ని జోడిద్దాం. ప్రోగ్రామ్ అంశాలు గెట్ పారామీటర్తో ప్రారంభమైనప్పుడు, మీరు తప్పనిసరిగా get_ex_callback అని వ్రాయాలి. ఇతర పరిస్థితులలో, మేము JSONని అన్వయించి, t కీని పొందడానికి ప్రయత్నిస్తాము.
@bot.callback_query_handler(func=lambda call: True) def iq_callback(query): data = query.data if data.startswith('get-'): get_ex_callback(query) else: try: if json.loads(data)[ 't'] == 'u': edit_message_callback(query) ValueError తప్ప: పాస్
t మీకు సమానం అయితే, మీరు edit_message_callback పద్ధతి కోసం ఒక ప్రోగ్రామ్ను వ్రాయవలసి ఉంటుంది. ఈ ప్రక్రియను దశలవారీగా విచ్ఛిన్నం చేద్దాం:
- కరెన్సీ మార్కెట్ స్థితి గురించి తాజా సమాచారాన్ని డౌన్లోడ్ చేస్తోంది (exchange_now = pb.get_exchange(data['c']).
- తేడాతో సీరియలైజర్ ద్వారా కొత్త సందేశాన్ని వ్రాయడం.
- సంతకాన్ని జోడిస్తోంది (get_edited_signature).
ప్రారంభ సందేశం మారకపోతే, edit_message_text పద్ధతికి కాల్ చేయండి.
def edit_message_callback(query): డేటా = json.loads(query.data)['e'] exchange_now = pb.get_exchange(data['c']) text = serialize_ex(exchange_now, get_exchange_diff( get_ex_from_iq_data(data) _now) + 'n' + get_edited_signature() query.message అయితే: bot.edit_message_text(text, query.message.chat.id, query.message.message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode. HTML'if : bot.edit_message_text( text, inline_message_id=query.inline_message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='HTML' )
JSONని అన్వయించడానికి get_ex_from_iq_data పద్ధతిని వ్రాద్దాం:
def get_ex_from_iq_data(exc_json): తిరిగి {'buy': exc_json['b'], 'sale': exc_json['s']}
మీకు మరికొన్ని పద్ధతులు అవసరం: ఉదాహరణకు, get_exchange_diff, ఇది కరెన్సీల ధర గురించి పాత మరియు కొత్త సమాచారాన్ని చదివి వ్యత్యాసాన్ని ప్రదర్శిస్తుంది.
def get_exchange_diff(చివరిది, ఇప్పుడు): తిరిగి { 'sale_diff': float("%.6f" % (float(ఇప్పుడు['సేల్']) - float(last['sale']))), 'buy_diff': float ("%.6f" % (ఫ్లోట్(ఇప్పుడు['కొనుగోలు']) - ఫ్లోట్(చివరి['కొనుగోలు']))) }
చివరిది, get_edited_signature, కోర్సు చివరిగా నవీకరించబడిన సమయాన్ని చూపుతుంది.
def get_edited_signature(): తిరిగి 'నవీకరించబడింది ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + ' (' + TIMEZONE_COMMON_NAME + ')'
ఫలితంగా, స్థిరమైన మారకపు రేటుతో బాట్ నుండి నవీకరించబడిన సందేశం ఇలా కనిపిస్తుంది:
కోర్సు మారినప్పుడు, సూచించిన పారామితుల కారణంగా విలువల మధ్య తేడాలు సందేశంలో ప్రదర్శించబడతాయి.
దశ 9: ఎంబెడెడ్ మోడ్ అమలు
ప్రోగ్రామ్ నుండి సమాచారాన్ని ఏదైనా చాట్కి త్వరగా పంపడానికి అంతర్నిర్మిత మోడ్ అవసరం - ఇప్పుడు మీరు పాల్గొనే వ్యక్తిగా సంభాషణకు బాట్ను జోడించాల్సిన అవసరం లేదు. ఒక టెలిగ్రామ్ వినియోగదారు బోట్ పేరును దాని ముందు @ గుర్తుతో నమోదు చేసినప్పుడు, మార్పిడి ఎంపికలు ఇన్పుట్ లైన్ పైన కనిపిస్తాయి. మీరు అంశాలలో ఒకదానిపై క్లిక్ చేస్తే, డేటాను నవీకరించడానికి మరియు పంపడానికి బాట్ ఫలితాలు మరియు బటన్లతో సంభాషణకు సందేశాన్ని పంపుతుంది. పంపినవారి పేరు “ద్వారా
InlineQuery లైబ్రరీ ద్వారా query_textకి పంపబడుతుంది. డేటా యొక్క శ్రేణి మరియు inline_query_id మూలకం వలె శోధన ఫలితాలను తిరిగి పొందడానికి కోడ్ answer_line ఫంక్షన్ని ఉపయోగిస్తుంది. మేము get_exchangeలను ఉపయోగిస్తాము, తద్వారా బోట్ అభ్యర్థనపై అనేక కరెన్సీలను కనుగొంటుంది.
@bot.inline_handler(func=lambda query: True) def query_text(inline_query): bot.answer_inline_query( inline_query.id, get_iq_articles(pb.get_exchanges(inline_query.query)) )
ఈ పద్ధతి ద్వారా InlineQueryResultArticle నుండి ఆబ్జెక్ట్లను తిరిగి ఇవ్వడానికి మేము get_iq_articlesకి డేటా శ్రేణిని పంపుతాము.
def get_iq_articles(ఎక్స్ఛేంజీలు): ఫలితం = [] ఎక్స్ఛేంజీలలో exc కోసం: result.append( telebot.types.InlineQueryResultArticle( id=exc['ccy'], title=exc['ccy'], input_message_content=telebot.types.InputTextMessageTextM (serialize_ex(exc), parse_mode='HTML' ), reply_markup=get_update_keyboard(exc), description='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1 ) ) తిరిగి ఫలితం
ఇప్పుడు, మీరు @ అని వ్రాస్తే
వినియోగదారులు కోరుకున్న కరెన్సీని నమోదు చేయడం ద్వారా ఫలితాలను ఫిల్టర్ చేయవచ్చు.
జాబితా నుండి కావలసిన కరెన్సీపై క్లిక్ చేసిన తర్వాత, చాట్ బోట్ వినియోగదారులు అందుకున్న అదే సందేశాన్ని అందుకుంటుంది. మీరు నవీకరణ బటన్ను కూడా ఉపయోగించవచ్చు. దిగువ చిత్రం బాట్ ద్వారా పంపబడిన నవీకరించబడిన సందేశాన్ని చూపుతుంది:
ముగింపు
టెలిగ్రామ్ కోసం బాట్ను ఎలా సృష్టించాలో ఇప్పుడు మీకు తెలుసు. మీరు మీ ప్రోగ్రామ్కు ఉపయోగకరమైన సాధనాలను జోడించవచ్చు: మెసెంజర్ యొక్క ఇతర వినియోగదారులకు ఫలితాన్ని నవీకరించడానికి మరియు పంపడానికి బటన్లు మరియు దానితో చాట్ వెలుపల బాట్ యొక్క విధులను ఉపయోగించడానికి మిమ్మల్ని అనుమతించే అంతర్నిర్మిత మోడ్. ఈ సూచనల ఆధారంగా, మీరు ఇతర ఫంక్షన్లతో ఏదైనా సాధారణ బోట్ను సృష్టించవచ్చు - మారకపు ధరలను చూపేది మాత్రమే కాదు. టెలిగ్రామ్లో కస్టమర్లతో చాట్ చేసే మరియు కంపెనీతో ఆసక్తి ఉన్న వ్యక్తుల కనెక్షన్ను బలోపేతం చేసే ఆటోమేటెడ్ అసిస్టెంట్ను రూపొందించడానికి లైబ్రరీలు, APIలు మరియు కోడ్తో ప్రయోగాలు చేయడానికి బయపడకండి.
ఫాంటాస్టికా ప్రచురణ