טעלעגראַם באָט אין פּיטהאָן. א פולשטענדיק וועגווייַזער צו שרייבן אַ באָט מיט וועקסל רייץ פֿון קראַצן

באָץ אין טעלעגראַם זענען מגילה וואָס העלפֿן צו פאַרלייגן קאָנטאַקט מיט די וילעם אָדער פאַרפּאָשעטערן אַקשאַנז וואָס ביז אַהער האָבן צו זיין דורכגעקאָכט מאַניואַלי. די מגילה זענען געשריבן ספּאַסיפיקלי פֿאַר די שליח פּלאַטפאָרמע. באָץ אַרבעט אין דעם וועג: דער באַניצער סענדז אַ באַפֿעל דורך די אַרייַנשרייַב שורה, און די סיסטעם ריספּאַנדז מיט אַ טעקסט אָדער ינטעראַקטיוו אָנזאָג. מאל די פּראָגראַם אפילו ימאַטייץ די אַקשאַנז פון אַ פאַקטיש מענטש - אַזאַ אַ באָט ינספּיירז מער צוטרוי צווישן קאַסטאַמערז.

עס זענען עטלעכע טייפּס פון סיסטעמען פֿאַר אָטאַמאַטיק הילף צו ניצערס. עטלעכע באָץ נאָר יבערגעבן מיט קאַסטאַמערז, אנדערע קעסיידער צושטעלן אינפֿאָרמאַציע. עס איז אוממעגלעך צו קלאר טיילן מגילה אין טייפּס - דעוועלאָפּערס אָפט פאַרבינדן עטלעכע פאַנגקשאַנז אין איין באָט.

איר קענען שרייַבן אַ פּשוט באָט פֿאַר טעלעגראַם מיט ינטעראַקטיוו עלעמענטן אין די פאָרעם פון אויף-פאַרשטעלן קנעפּלעך אין 9 סטעפּס. זאל ס קוק אין יעדער פון זיי אין דעטאַל און ענטפֿערן אַ ביסל פראגעס:

  • ווי צו אָנהייבן אַ באָט;
  • ווי צו רעגיסטרירן אַ געבויט-אין קלאַוויאַטור פון איין אָדער מער קנעפּלעך;
  • ווי צו פּראָגראַם די קנעפּלעך פֿאַר די געבעטן פאַנגקשאַנז;
  • וואָס איז ינלינע מאָדע און ווי צו שטעלן עס פֿאַר אַ יגזיסטינג באָט.

שריט 0: טעאָרעטיש הינטערגרונט וועגן די טעלעגראַם באָץ אַפּי

די הויפּט געצייַג געניצט צו שאַפֿן טעלעגראַם באָץ איז די HTML אַפּפּליקאַטיאָן פּראָגראַממינג צובינד, אָדער HTML API. דער עלעמענט אַקסעפּץ גאַסט ריקוועס און סענדז רעספּאָנסעס אין די פאָרעם פון אינפֿאָרמאַציע. גרייט-געמאכט דיזיינז פאַרפּאָשעטערן די אַרבעט אויף דעם פּראָגראַם. צו שרייַבן אַ באָט פֿאַר טעלעגראַם, איר דאַרפֿן צו נוצן דעם בליצפּאָסט אַדרעס: https://api.telegram.org/bot/METHOD_NAME

פֿאַר די ריכטיק פאַנגקשאַנינג פון די באָט, אַ סימען איז אויך דארף - אַ קאָמבינאַציע פון ​​אותיות וואָס פּראַטעקץ די פּראָגראַם און עפענען אַקסעס צו עס פֿאַר טראַסטיד דעוועלאָפּערס. יעדער סימן איז יינציק. דער שטריקל איז אַסיינד צו די באָט ביי שאַפונג. מעטהאָדס קענען זיין אַנדערש: getUpdates, getChat און אנדערע. די ברירה פון אופֿן דעפּענדס אויף וואָס אַלגערידאַם די דעוועלאָפּערס דערוואַרטן פון די באָט. סימכע ביישפיל:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

באָץ נוצן GET און POST ריקוועס. מעטאַד פּאַראַמעטערס אָפט האָבן צו זיין סאַפּלאַמענטאַד - פֿאַר בייַשפּיל, ווען די sendMessage אופֿן איז געמיינט צו שיקן די שמועס שייַן און עטלעכע טעקסט. פּאַראַמעטערס פֿאַר מעטאָד ראַפינירטקייַט קענען זיין דורכגעגאנגען ווי אַ URL אָנפֿרעג שטריקל ניצן אַפּלאַקיישאַן / x-www-form-urlencoded אָדער דורך Application-json. די מעטהאָדס זענען נישט פּאַסיק פֿאַר דאַונלאָודינג טעקעס. UTF-8 קאָדירונג איז אויך פארלאנגט. דורך שיקן אַ בקשה צו די API, איר קענען באַקומען די רעזולטאַט אין JSON פֿאָרמאַט. קוק אין דער ענטפער פון דעם פּראָגראַם צו ריטריווינג אינפֿאָרמאַציע דורך די getME אופֿן:

באַקומען https://api.telegram.org/bot/getMe{ ok: אמת, רעזולטאַט: {id: 231757398, first_name: "עקסטשאַנגע קורס באָט", באַניצער נאָמען: "עקסטשאַנגעטעסטבאָט"}}

דער רעזולטאַט וועט זיין באקומען אויב ok equals ריכטיק. אַנדערש, די סיסטעם וועט אָנווייַזן אַ טעות.

עס זענען צוויי וועגן צו באַקומען מנהג אַרטיקלען אין באָץ. ביידע מעטהאָדס זענען עפעקטיוו, אָבער פּאַסיק אין פאַרשידענע קאַסעס. צו באַקומען אַרטיקלען, איר קענען מאַניואַלי שרייַבן אַ בקשה מיט די getUpdates אופֿן - די פּראָגראַם וועט ווייַזן די דערהייַנטיקן דאַטן מענגע אויף דעם עקראַן. ריקוועס מוזן זיין געשיקט קעסיידער, נאָך אַנאַלייזינג יעדער מענגע, שיקט איז ריפּיטיד. אָפסעט איז אַ פּאַראַמעטער וואָס דיטערמאַנז די נומער פון סקיפּט רעקאָרדס איידער לאָודינג אַ נייַע רעזולטאַט צו ויסמיידן די ריאַפּיראַנס פון אָפּגעשטעלט אַבדזשעקץ. די בענעפיץ פון די getUpdates אופֿן וועט קומען אין שפּיל אויב:

  • עס איז קיין וועג צו קאַנפיגיער הטטפּס;
  • קאָמפּלעקס סקריפּטינג שפּראַכן זענען געניצט;
  • די באָט סערווער ענדערונגען פון צייט צו צייט;
  • די באָט איז לאָודיד מיט ניצערס.

די רגע אופֿן וואָס קענען זיין געשריבן צו באַקומען באַניצער אַרטיקלען איז setWebhook. עס איז געניצט אַמאָל, ניט דאַרפֿן צו קעסיידער שיקן נייַ ריקוועס. די וועבהאָאָק סענדז דאַטן דערהייַנטיקונגען צו די ספּעסאַפייד URL. דעם אופֿן ריקווייערז אַ SSL באַווייַזן. וועבהאָאָק וועט זיין נוציק אין די קאַסעס:

  • וועב פּראָגראַממינג שפּראַכן זענען געניצט;
  • דער באָט איז נישט אָוווערלאָודיד, עס זענען נישט צו פילע ניצערס;
  • דער סערווירער טוט נישט טוישן, די פּראָגראַם בלייבט אויף דער זעלביקער סערווער פֿאַר אַ לאַנג צייַט.

אין ווייַטער ינסטראַקשאַנז, מיר וועלן נוצן 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 טעקע קוקט ווי דאָס:

אַרייַנפיר שייַעך ימפּאָרט ריקוועס אַרייַנפיר דזשסאָן URL = 'https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5' דעפ load_exchange(): צוריקקומען json.loads(requests.get(URL).text) דעf get_exchange(ccy_key) ): פֿאַר עקס אין לאָוד_עקסטשאַנגע (): אויב ccy_key == exc['ccy']: צוריקקומען עקס צוריקקומען False def get_exchanges (ccy_pattern): רעזולטאַט = [] ccy_pattern = re.escape(ccy_pattern) + '.*' פֿאַר עקס אין 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 באַפֿעל. ינסטרוקטיאָנס וועט דערשייַנען אין די שמועסן, לויט וואָס איר דאַרפֿן צו שרייַבן די נאָמען פון די באָט ערשטער, און דעמאָלט זיין אַדרעס. ווען דער באָט חשבון איז באשאפן, אַ באַגריסונג אָנזאָג מיט אַ סימען וועט דערשייַנען אויף דעם עקראַן. פֿאַר ווייַטער קאַנפיגיעריישאַן, נוצן די קאַמאַנדז:

  • / setdescription - באַשרייַבונג;
  • / setabouttext - אינפֿאָרמאַציע וועגן די נייַע באָט;
  • / setuserpic - פּראָפיל פאָטאָ;
  • / setinline - ינלינע מאָדע;
  • /setcommands - באַשרייַבונג פון קאַמאַנדז.

אין די לעצטע קאַנפיגיעריישאַן שריט, מיר באַשרייַבן / הילף און / וועקסל. ווען אַלע די סטעפּס זענען דורכגעקאָכט, עס איז צייט צו גיין צו קאָדירונג.

שריט 3: באַשטעטיקן און קאַטער די Bot

זאל ס שאַפֿן אַ config.py טעקע. אין עס, איר דאַרפֿן צו ספּעציפיצירן די יינציק באָט קאָד און די צייט זאָנע אין וואָס די פּראָגראַם וועט געפֿינען אינפֿאָרמאַציע.

TOKEN = '' # פאַרבייַטן מיט דיין באָט ס טאָקעןTIMEZONE = 'אייראָפּע/קיִעוו' TIMEZONE_COMMON_NAME = 'קיִעוו'

ווייַטער, מיר מאַכן אן אנדער טעקע מיט די אַרייַנפיר פון די פריער געשריבן pb.py, לייברעריז און אנדערע נייטיק קאַמפּאָונאַנץ. די פעלנדיק לייברעריז זענען אינסטאַלירן פֿון די פּעקל פאַרוואַלטונג סיסטעם (פּיפּ).

אַרייַנפיר טעלעבאָאָטימפּאָרט קאָנפיגימפּאָרט פּביימפּאָרט דאַטעטיים אַרייַנפיר פּיצימפּאָרט דזשסאָן ימפּאָרט טראַסעבאַק פּ_TIMEZONE = pytz.timezone(config.TIMEZONE) TIMEZONE_COMMON_NAME = config.TIMEZONE_COMMON_NAME

לאָמיר נוצן די אינהאַלט פון pyTelegramBotApi צו שאַפֿן אַ באָט. מיר שיקן די באקומען סימען ניצן די פאלגענדע קאָד:

bot = telebot.TeleBot(config.TOKEN) bot.polling(none_stop = אמת)

דער נאָנע_סטאָפּ פּאַראַמעטער ינשורז אַז ריקוועס זענען קעסיידער געשיקט. די אָפּעראַציע פון ​​די פּאַראַמעטער וועט נישט זיין אַפעקטאַד דורך אופֿן ערראָרס.

שריט 4: שרייב די / אָנהייב קאַמאַנד האַנדלער

אויב אַלע די פריערדיקע סטעפּס זענען דורכגעקאָכט ריכטיק, די באָט האט סטאַרטעד ארבעטן. דער פּראָגראַם דזשענערייץ ריקוועס קעסיידער ווייַל עס ניצט די getUpdates אופֿן. איידער די שורה מיט די none_stop עלעמענט, מיר דאַרפֿן אַ שטיק פון קאָד וואָס פּראַסעסאַז די / אָנהייב באַפֿעל:

@bot.message_handler(commands=['start']) def start_command(message): bot.send_message(message.chat.id, 'גרעעטינגס! איך קענען ווייַזן איר וועקסל rates.n' + 'צו באַקומען די וועקסל רייץ דריקן / exchange.n' + 'צו באַקומען הילף דריקן /הילף.')

RџSЂRё קאַמאַנדז = ['אָנהייב'] גלייך צו אמת start_command איז גערופן. דער אינהאַלט פון דער אָנזאָג גייט דאָרט. ווייַטער, איר דאַרפֿן צו ינסטרומענט די שיקן פונקציע_ אָנזאָג אין באַציונג צו אַ באַזונדער אָנזאָג.

טרעטן 5: שאַפֿן אַ /help Command Handler

די / הילף באַפֿעל קענען זיין ימפּלאַמענאַד ווי אַ קנעפּל. דורך געבן אַ קליק אויף עס, דער באַניצער וועט זיין גענומען צו די טעלעגראַם חשבון פון די דעוועלאָפּער. געבן דעם קנעפּל אַ נאָמען, אַזאַ ווי "בעט די דעוועלאָפּער". שטעלן די רעפּלי_מאַרקופּ פּאַראַמעטער, וואָס רידערעקץ דער באַניצער צו אַ לינק, פֿאַר די send_message אופֿן. לאָמיר שרייַבן אין די קאָד דעם פּאַראַמעטער וואָס קריייץ די קלאַוויאַטור (InlineKeyboardMarkup). איר נאָר דאַרפֿן איין קנעפּל (InlineKeyboardButton).

די לעצט באַפֿעל האַנדלער קאָד קוקט ווי דאָס:

@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=קלאַוויאַטור)

קאָד קאַמף אין טעלעגראַם שמועסן:

טעלעגראַם באָט אין פּיטהאָן. א פולשטענדיק וועגווייַזער צו שרייבן אַ באָט מיט וועקסל רייץ פֿון קראַצן

שריט 6: אַדינג די / וועקסל באַפֿעלן האַנדלער

דעם שריט איז דארף צו ווייַזן קנעפּלעך מיט סימבאָלס פון פאַראַנען קעראַנסיז אין די שמועסן. אַן אויף-פאַרשטעלן קלאַוויאַטור מיט אָפּציעס וועט העלפֿן איר ויסמיידן מיסטייקס. פּריוואַטבאַנק גיט אינפֿאָרמאַציע אויף די רובל, דאָלאַר און ייראָ. די InlineKeyboardButton אָפּציע אַרבעט ווי דאָס:

  1. דער באַניצער גיט די קנעפּל מיט די געבעטן באַצייכענונג.
  2. getUpdates נעמט אַ קאַללבאַקק (CallbackQuery).
  3. עס ווערט באקאנט ווי צו שעפּן דרינגלעך די קלאַוויאַטור - אינפֿאָרמאַציע וועגן די געדריקט קנעפּל איז טראַנסמיטטעד.

/ וועקסל האַנדלער קאָד:

@bot.message_handler(commands=['exchange']) def exchange_command(message): קלאַוויאַטור = 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=קלאַוויאַטור)

דער רעזולטאַט פון די קאָד אין טעלעגראַם:

טעלעגראַם באָט אין פּיטהאָן. א פולשטענדיק וועגווייַזער צו שרייבן אַ באָט מיט וועקסל רייץ פֿון קראַצן

שריט 7: שרייבן אַ האַנדלער פֿאַר די געבויט-אין קלאַוויאַטור קנעפּלעך

די pyTelegramBot Api פּעקל כּולל די @bot.callback_query_handler דעקערייטער פֿונקציע. דער קאָמפּאָנענט איז דיזיינד צו איבערזעצן די קאַללבאַקק אין אַ פֿונקציע - די API אַנווראַפּס און שייַעך-קריייץ די רופן. עס איז געשריבן ווי דאָס:

@bot.callback_query_handler (func = lambda רופן: אמת) דעף iq_callback (אָנפֿרעג): דאַטן = query.data אויב data.startswith ('get-'): get_ex_callback (אָנפֿרעג)

לאָמיר אויך שרייַבן די get_ex_callback אופֿן:

דעף get_ex_callback (קווערי): bot.answer_callback_query (query.id) send_exchange_result (query.message, query.data[4:])

עס איז אן אנדער נוציק אופֿן - answer_callback_query. עס העלפּס צו באַזייַטיקן די מאַסע צווישן דרינגלעך די קנעפּל און ווייַזנדיק די רעזולטאַט אויף דעם עקראַן. איר קענען שיקן אַ אָנזאָג צו send_exchange_query דורך פאָרן עטלעכע קראַנטקייַט קאָד און אָנזאָג. לאמיר שרייבן send_exchange_result:

דעף send_exchange_result (אָנזאָג, עקס_קאָדע): bot.send_chat_action(message.chat.id, 'טייפּינג') ex = pb.get_exchange(ex_code) bot.send_message(message.chat.id, serialize_ex(ex), reply_markup=get_update_keyboard(ex_code) ), parse_mode='HTML')

בשעת די טשאַטבאָט נעמט די רעזולטאַט פון די בקשה פון די באַנק אַפּי, דער גאַסט זעט די ינסקריפּשאַן "טייפּינג אַ אָנזאָג". עס קוקט ווי אַ פאַקטיש מענטש איז ענטפֿערן. צו ווייַזן אַזאַ אַ גראדן אויף דעם עקראַן, איר דאַרפֿן צו לייגן אַרייַנשרייַב סטאַטוס שורות. ווייַטער, מיר וועלן נוצן get_exchange - מיט זייַן הילף, די פּראָגראַם וועט באַקומען די קראַנטקייַט באַצייכענונג (רובל, עוראָס אָדער דאָללאַרס). send_message ניצט נאָך מעטהאָדס: serialize_ex קאַנווערץ די קראַנטקייַט צו אן אנדער פֿאָרמאַט, און get_update_keyboard שטעלן זיך סאָפטקייס וואָס דערהייַנטיקן אינפֿאָרמאַציע און שיקן קראַנטקייַט מאַרק דאַטן צו אנדערע טשאַץ.

זאל ס שרייַבן די קאָד פֿאַר get_update_keyboard. צוויי קנעפּלעך דאַרפֿן צו זיין דערמאנט - ה און E שטיין פֿאַר טיפּ און וועקסל. די switch_inline_query נומער פֿאַר די ייַנטיילן קנעפּל איז דארף אַזוי אַז דער באַניצער קענען קלייַבן פון עטלעכע טשאַץ. דער גאַסט וועט קענען צו קלייַבן צו וועמען צו שיקן די קראַנט וועקסל קורס פון דער דאָלאַר, רובל אָדער ייראָ.

def get_update_keyboard(ex): קלאַוויאַטור = 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['buy'] if diff: result += ' ' + serialize_exchange_diff(diff['buy_diff']) + 'n' + 'פאַרקויפן: ' + ex_json['sale'] + ' ' + serialize_exchange_diff(diff['sale_diff']) + 'n' else: result += 'nSell:' + ex_json['sale'] + 'n' return result def serialize_exchange_diff(diff): result = '' if diff> 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">)' elif diff < 0: result = '(' + 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 אויב data.startswith('get-'): get_ex_callback (אָנפֿרעג) אַנדערש: פּרוּווט: אויב json.loads (דאַטאַ)[ 't'] == 'ו': edit_message_callback (אָנפֿרעג) אַחוץ ValueError: פאָרן

אויב ה יקוואַלז ו, איר וועט דאַרפֿן צו שרייַבן אַ פּראָגראַם פֿאַר די edit_message_callback אופֿן. זאל ס ברעכן אַראָפּ דעם פּראָצעס שריט דורך שריט:

  1. דאַונלאָודינג דערהייַנטיקט אינפֿאָרמאַציע וועגן די שטאַט פון די קראַנטקייַט מאַרק (exchange_now = pb.get_exchange(data['c']).
  1. שרייבן אַ נייַע אָנזאָג דורך אַ סיריאַליזער מיט דיפ.
  2. אַדינג אַ כסימע (געט_עדיטיד_סיגנאַטורע).

אויב דער ערשט אָנזאָג טוט נישט טוישן, רופן די edit_message_text אופֿן.

דעף edit_message_callback (אָנפֿרעג): דאַטן = 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)), exchange_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='line_html'query.elif : bot.edit_message_text (text, inline_message_id=query.inline_message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='HTML')

זאל ס שרייַבן די get_ex_from_iq_data אופֿן צו פּאַרס JSON:

דעף 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"% (פלאָט (איצט ['פאַרקויף']) - פלאָוט (לעצטע ['פאַרקויף']))), 'בוי_דיף': פלאָוט ("%.6f" % (פלאָוט (איצט ['קויפן']) - פלאָוט (לעצטע ['קויפן']))) }

די לעצטע, get_edited_signature, ווייזט די צייט ווען די קורס איז לעצטנס דערהייַנטיקט.

def get_edited_signature(): צוריקקומען 'דערהייַנטיקט ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + '(' + TIMEZONE_COMMON_NAME + ')'

ווי אַ רעזולטאַט, די דערהייַנטיקט אָנזאָג פון די באָט מיט אַ סטאַביל וועקסל קורס קוקט ווי דאָס:

טעלעגראַם באָט אין פּיטהאָן. א פולשטענדיק וועגווייַזער צו שרייבן אַ באָט מיט וועקסל רייץ פֿון קראַצן

ווען דער קורס ענדערונגען, די דיפעראַנסיז צווישן די וואַלועס זענען געוויזן אין דער אָנזאָג רעכט צו די פּריסקרייבד פּאַראַמעטערס.

טעלעגראַם באָט אין פּיטהאָן. א פולשטענדיק וועגווייַזער צו שרייבן אַ באָט מיט וועקסל רייץ פֿון קראַצן

שריט 9: ימפּלעמענטאַטיאָן פון עמבעדיד מאָדע

די געבויט-אין מאָדע איז דארף צו געשווינד שיקן אינפֿאָרמאַציע פון ​​די פּראָגראַם צו קיין שמועס - איצט איר טאָן ניט דאַרפֿן צו לייגן אַ באָט צו די שמועס ווי אַ באַטייליקטער. ווען אַ טעלעגראַם באַניצער גייט אריין אַ באָט נאָמען מיט אַ @ צייכן אין פראָנט פון אים, קאַנווערזשאַן אָפּציעס זאָל זיין געוויזן אויבן די אַרייַנשרייַב שורה. אויב איר דריקט אויף איינער פון די זאכן, דער באָט וועט שיקן אַ אָנזאָג צו די שמועס מיט די רעזולטאַטן און קנעפּלעך פֿאַר אַפּדייטינג און שיקט דאַטן. דער נאָמען פון די אָפּשיקער וועט אַנטהאַלטן דעם קעפּל "via ".

InlineQuery איז דורכגעגאנגען צו query_text דורך די ביבליאָטעק. דער קאָד ניצט די answer_line פונקציע צו צוריקקריגן די זוכן רעזולטאַטן ווי אַ מענגע פון ​​דאַטן און די inline_query_id עלעמענט. מיר נוצן get_exchanges אַזוי אַז דער באָט געפינט עטלעכע קעראַנסיז אויף בעטן.

@bot.inline_handler(func=lambda אָנפֿרעג: אמת) דעף query_text(inline_query): bot.answer_inline_query(inline_query.id, get_iq_articles(pb.get_exchanges(inline_query.query)))

מיר פאָרן אַ מענגע פון ​​דאַטן צו get_iq_articles אין סדר צו צוריקקומען אַבדזשעקץ פֿון InlineQueryResultArticle דורך דעם אופֿן.

def get_iq_articles (יקסטשיינדזשיז): רעזולטאַט = [] פֿאַר עקס אין יקסטשיינדזשיז: result.append (telebot.types.InlineQueryResultArticle (id=exc['ccy'], title=exc['ccy'], input_message_content=telebot.types.InputTextMessageContent (serialize_ex(exc), parse_mode='HTML'), reply_markup=get_update_keyboard(exc), description='Convert' + exc['base_ccy'] + '->' + exc['ccy'], thumb_height=1)) צוריקקומען רעזולטאַט

איצט, אויב איר שרייַבן @ און אַ פּלאַץ אין די שורה, די זוכן רעזולטאַטן וועט דערשייַנען אויף דעם עקראַן - אָפּציעס פֿאַר קאַנווערטינג אין דריי פאַראַנען קעראַנסיז.

טעלעגראַם באָט אין פּיטהאָן. א פולשטענדיק וועגווייַזער צו שרייבן אַ באָט מיט וועקסל רייץ פֿון קראַצן

יוזערז קענען פילטער די רעזולטאַטן דורך אַרייַן די געבעטן קראַנטקייַט.

נאָך געבן אַ קליק אויף די געבעטן קראַנטקייַט פון דער רשימה, די שמועסן באַקומען די זעלבע אָנזאָג אַז באָט יוזערז באַקומען. איר קענט אויך נוצן די דערהייַנטיקן קנעפּל. די בילד אונטן ווייזט די דערהייַנטיקט אָנזאָג געשיקט דורך די באָט:

טעלעגראַם באָט אין פּיטהאָן. א פולשטענדיק וועגווייַזער צו שרייבן אַ באָט מיט וועקסל רייץ פֿון קראַצן

סאָף

איצט איר וויסן ווי צו שאַפֿן אַ באָט פֿאַר טעלעגראַם. איר קענען לייגן נוציק מכשירים צו דיין פּראָגראַם: קנעפּלעך פֿאַר אַפּדייטינג און שיקן די רעזולטאַט צו אנדערע יוזערז פון די שליח און אַ געבויט-אין מאָדע וואָס אַלאַוז איר צו נוצן די פאַנגקשאַנז פון די באָט אַרויס די שמועס מיט אים. באַזירט אויף דעם לימעד, איר קענען מאַכן קיין פּשוט באָט מיט אנדערע פאַנגקשאַנז - ניט בלויז דער וואָס וועט ווייַזן וועקסל רייץ. דו זאלסט נישט זיין דערשראָקן צו עקספּערימענט מיט לייברעריז, אַפּיס און קאָד צו שאַפֿן אַן אָטאַמייטיד אַסיסטאַנט וואָס וועט שמועסן מיט קאַסטאַמערז אויף טעלעגראַם און פארשטארקן די פֿאַרבינדונג פון אינטערעסירט מענטשן מיט די פירמע.

קסנומקס קאַמענט

לאָזן אַ ענטפֿערן