{"id":502337,"date":"2026-11-09T17:53:27","date_gmt":"2026-11-09T14:53:27","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=502337"},"modified":"2026-11-09T17:53:27","modified_gmt":"2026-11-09T14:53:27","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=502337","title":{"rendered":"HTML\u2011\u0432\u0438\u0434\u0436\u0435\u0442\u044b Telegram \u0434\u043e\u00a0\u0432\u044b\u0445\u043e\u0434\u0430 Bot API 10.4: \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0447\u0435\u0440\u0435\u0437 MTProto \u0438\u0437\u00a0Telethon \u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0433\u0440\u0430\u0431\u043b\u0438 \u0441\u043b\u043e\u044f 233"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u00a0Telegram \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c HTMLBubbles: \u0432\u0438\u0434\u0436\u0435\u0442\u044b, \u0433\u0434\u0435 \u0431\u043e\u0442 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0432\u0435\u0431\u2011\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c. \u0412\u00a0\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c Bot API 10.3\u00a0\u043c\u0435\u0442\u043e\u0434\u0430 \u0434\u043b\u044f\u00a0\u043d\u0438\u0445 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442, \u043d\u043e\u00a0\u0432\u00a0\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 MTProto \u043e\u043d\u0438 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c. \u042f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u0441\u0432\u043e\u044e \u043c\u0438\u043d\u0438\u2011\u0438\u0433\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 Telethon, \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0441\u043b\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0438 \u0441\u043e\u0431\u0440\u0430\u043b \u043f\u043e\u00a0\u0434\u043e\u0440\u043e\u0433\u0435 \u0432\u0441\u0435 \u0433\u0440\u0430\u0431\u043b\u0438: \u0441\u0445\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0430\u0434\u0430\u0435\u0442 \u043e\u0442\u00a0\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430, \u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u00a0\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0442\u0443\u0434\u0430, \u043a\u0443\u0434\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442. \u041d\u0438\u0436\u0435\u00a0\u2014 \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u0434 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u00a0\u0442\u0435\u043c, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u0440\u0443\u043a\u0430\u043c\u0438.<\/p>\n<h2>\u0427\u0442\u043e\u00a0\u0442\u0430\u043a\u043e\u0435 \u0432\u0438\u0434\u0436\u0435\u0442 \u0438 \u0447\u0442\u043e\u00a0\u043e\u043d \u0443\u043c\u0435\u0435\u0442<\/h2>\n<p>\u0412\u0438\u0434\u0436\u0435\u0442 (\u0432 \u043e\u0431\u0438\u0445\u043e\u0434\u0435 HTMLBubbles)\u00a0\u2014 \u044d\u0442\u043e \u043e\u0434\u0438\u043d HTML\u2011\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u0442 \u043a\u043b\u0430\u0434\u0451\u0442 \u0432\u00a0\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u00a0\u043c\u0435\u0434\u0438\u0430. \u041a\u043b\u0438\u0435\u043d\u0442 \u0440\u0438\u0441\u0443\u0435\u0442 \u0435\u0433\u043e \u043f\u0440\u044f\u043c\u043e \u0432\u00a0\u043f\u0443\u0437\u044b\u0440\u0435 \u0447\u0430\u0442\u0430: \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c Mini App, \u043d\u0435\u00a0\u043d\u0443\u0436\u0435\u043d \u0445\u043e\u0441\u0442\u0438\u043d\u0433, \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0435\u0434\u0435\u0442 \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438. Telegram \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0432\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <a href=\"https:\/\/github.com\/TelegramMessenger\/widget-sandbox\" rel=\"noopener nofollow\">TelegramMessenger\/widget\u2011sandbox<\/a>: \u0432\u00a0\u0434\u0435\u043c\u043e \u0442\u0430\u043c \u0444\u043e\u0440\u043c\u0430 \u0437\u0430\u043a\u0430\u0437\u0430, \u043e\u043f\u0440\u043e\u0441, \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043a\u0440\u0435\u0441\u0442\u0438\u043a\u0438\u2011\u043d\u043e\u043b\u0438\u043a\u0438 \u0438 \u0431\u0435\u0433\u0443\u0449\u0438\u0439 \u043a\u0443\u0440\u0441.<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 TelegramWidget. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0432\u00a0\u043d\u0451\u043c:<\/p>\n<ul>\n<li>\n<p>request(data)\u00a0\u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043e 64\u00a0\u0431\u0430\u0439\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u0434\u043e 1\u00a0\u041a\u0411; <\/p>\n<\/li>\n<li>\n<p>openLink(url) \u0438 openTelegramLink(url)\u00a0\u2014 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 (\u043e\u0431\u044b\u0447\u043d\u0430\u044f\u00a0\u2014 \u0441\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c, <a href=\"http:\/\/t.me\" rel=\"noopener nofollow\">t.me<\/a>\u00a0\u2014 \u0441\u0440\u0430\u0437\u0443); <\/p>\n<\/li>\n<li>\n<p>chatData \u0438 publicData\u00a0\u2014 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0438\u0448\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u0442: \u043e\u0434\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043e \u043a\u00a0\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044e \u0432\u00a0\u0447\u0430\u0442\u0435, \u0432\u0442\u043e\u0440\u043e\u0435 \u0432\u0438\u0434\u043d\u043e \u0432\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0432\u0438\u0434\u0436\u0435\u0442; <\/p>\n<\/li>\n<li>\n<p>viewer, chatType, isForward\u00a0\u2014 \u043a\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0438 \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. <\/p>\n<p>\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u0432\u0441\u0451 \u043d\u0430\u00a0\u043c\u0438\u043d\u0438\u2011\u0438\u0433\u0440\u0435: \u0442\u0440\u044f\u0441\u0451\u0448\u044c \u0431\u0443\u0442\u044b\u043b\u043a\u0443 \u0433\u0430\u0437\u0438\u0440\u043e\u0432\u043a\u0438, \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0441\u0442\u0451\u0442, \u0432\u043e\u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u0440\u044b\u043b\u00a0\u2014 \u0437\u0430\u0431\u0440\u0430\u043b \u043e\u0447\u043a\u0438, \u043f\u0435\u0440\u0435\u0434\u0435\u0440\u0436\u0430\u043b\u00a0\u2014 \u043a\u0440\u044b\u0448\u043a\u0443 \u0441\u043e\u0440\u0432\u0430\u043b\u043e. \u041f\u044f\u0442\u044c \u0431\u0443\u0442\u044b\u043b\u043e\u043a \u0437\u0430\u00a0\u043f\u0430\u0440\u0442\u0438\u044e \u0438 \u043e\u0431\u0449\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u043e\u0442. \u0416\u0438\u0432\u043e\u0439 \u0431\u043e\u0442 \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: <a class=\"mention\" href=\"\/users\/game_barulin_cv_bot\">@game_barulin_cv_bot<\/a>. \u0415\u0441\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0422\u0413 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u00abunsupported message\u00bb, \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<figure class=\"bordered full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/2c\/9f\/d2\/2c9fd29fb38758f47658791270e36212.png\" alt=\"\u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0445\" title=\"\u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0445\" width=\"910\" height=\"504\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/2c\/9f\/d2\/2c9fd29fb38758f47658791270e36212.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/2c\/9f\/d2\/2c9fd29fb38758f47658791270e36212.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430\u00a0\u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0445<\/figcaption><\/div>\n<\/figure>\n<figure class=\"bordered full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/c4\/76\/91\/c4769143e303e8a510755b03dbd6520c.png\" alt=\"\u041c\u043e\u0439 \u0434\u0435\u043c\u043e-\u0432\u0438\u0434\u0436\u0435\u0442 \u0432 \u0447\u0430\u0442\u0435\" title=\"\u041c\u043e\u0439 \u0434\u0435\u043c\u043e-\u0432\u0438\u0434\u0436\u0435\u0442 \u0432 \u0447\u0430\u0442\u0435\" width=\"676\" height=\"1489\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/c4\/76\/91\/c4769143e303e8a510755b03dbd6520c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/c4\/76\/91\/c4769143e303e8a510755b03dbd6520c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041c\u043e\u0439 \u0434\u0435\u043c\u043e\u2011\u0432\u0438\u0434\u0436\u0435\u0442 \u0432\u00a0\u0447\u0430\u0442\u0435<\/figcaption><\/div>\n<\/figure>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u00a0Bot API<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Bot API \u043d\u0430\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u00a0\u2014 10.3, \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0432\u00a0\u043d\u0435\u0439 \u043d\u0435\u0442. \u0412\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u043e\u043f\u0438\u0441\u0430\u043d Bot API 10.4\u00a0\u0441\u00a0\u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 sendWidget, answerWidgetQuery, editMessageWidgetData \u0438 \u0430\u043f\u0434\u0435\u0439\u0442\u043e\u043c widget_query, \u043d\u043e\u00a0\u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u00a0\u0431\u0435\u0442\u0430\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0431\u043e\u0442 \u043d\u0430\u00a0aiogram \u0438\u043b\u0438\u00a0python\u2011telegram\u2011bot \u0432\u0438\u0434\u0436\u0435\u0442 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0435\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442.<\/p>\n<p>\u0417\u0430\u0442\u043e \u0432\u00a0MTProto \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0435\u0441\u0442\u044c \u0441 233-\u0433\u043e \u0441\u043b\u043e\u044f. \u0411\u043e\u0442 \u043c\u043e\u0436\u0435\u0442 \u0445\u043e\u0434\u0438\u0442\u044c \u0432\u00a0MTProto \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e\u00a0\u0441\u0432\u043e\u0435\u043c\u0443 \u0442\u043e\u043a\u0435\u043d\u0443: \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 Telethon \u0438 Pyrogram. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0437\u0430\u00a0\u043d\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b.<\/p>\n<h2>\u0413\u0434\u0435 \u0431\u0440\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443: \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0432\u0440\u0451\u0442<\/h2>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u043d\u0430\u00a0\u0447\u0442\u043e\u00a0\u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f: \u0441\u0445\u0435\u043c\u0430 \u0432\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b (<a href=\"https:\/\/github.com\/TelegramMessenger\/widget-sandbox\/blob\/3acba1b62093c83815d38603d26f48c4f26a94c2\/docs\/tgw-format.md?plain=1#L4\" rel=\"noopener nofollow\">docs\/tgw\u2011format.md<\/a>) \u043d\u0435\u00a0\u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u043e \u0441\u0445\u0435\u043c\u043e\u0439 \u0432\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 Telegram Desktop (Telegram\/SourceFiles\/mtproto\/scheme\/<a href=\"http:\/\/api.tl\" rel=\"noopener nofollow\">api.tl<\/a>).<\/p>\n<p>\u0412\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438:<\/p>\n<blockquote><\/blockquote>\n<blockquote>\n<p>inputMediaWidget#44f6c04e flags:# allow_queries:flags.0?true shared_widget:flags.1?true width:int height:int html:string public_data:flags.2?string chat_data:flags.3?string = InputMedia;<\/p>\n<\/blockquote>\n<p>\u0424\u043b\u0430\u0433\u0438 \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044b, fwd_allow_queries \u043f\u0440\u043e\u043f\u0430\u043b, \u0430\u00a0ID \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u00a0\u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0445\u0435\u043c\u044b, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043e\u043d \u0442\u043e\u0436\u0435 \u0440\u0430\u0437\u043d\u044b\u0439. \u0421\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0437\u00a0Desktop. \u041c\u043e\u0440\u0430\u043b\u044c: \u0441\u0445\u0435\u043c\u0443 \u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0437\u00a0\u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c Telegram \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0430\u043c, \u0430\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043a\u0430\u043a\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0433\u0440\u044b \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u0432 \u043d\u0443\u0436\u043d\u044b \u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u0438\u043f\u0430:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"403\" width=\"403\">\n<p align=\"left\"><strong>\u0422\u0438\u043f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0417\u0430\u0447\u0435\u043c<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"403\" width=\"403\">\n<p align=\"left\"><code>inputMediaWidget#44f6c04e<\/code> <\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0430\u043c \u0432\u0438\u0434\u0436\u0435\u0442: HTML, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0444\u043b\u0430\u0433\u00a0<code>allow_queries<\/code>. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u00a0<code>messages.sendMedia<\/code> <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"403\" width=\"403\">\n<p align=\"left\"><code>messageMediaWidget#2238f214<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u0430\u043a \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432\u00a0\u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"403\" width=\"403\">\n<p align=\"left\"><code>updateBotWidgetQuery#b373fe68<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0430\u043f\u0434\u0435\u0439\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u0438\u0434\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043b\u00a0<code>TelegramWidget.request()<\/code> <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"403\" width=\"403\">\n<p align=\"left\"><code>messages.setBotWidgetQueryAnswer#f8cdec6a<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0442\u0432\u0435\u0442 \u0431\u043e\u0442\u0430, \u043d\u0430\u00a0\u043d\u0435\u0433\u043e 15\u00a0\u0441\u0435\u043a\u0443\u043d\u0434, \u0438\u043d\u0430\u0447\u0435 \u0443\u00a0\u0432\u0438\u0434\u0436\u0435\u0442\u0430\u00a0<code>TIMEOUT<\/code> <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>\u0423\u0447\u0438\u043c Telethon \u043d\u043e\u0432\u044b\u043c \u0442\u0438\u043f\u0430\u043c<\/h3>\n<p>\u0412\u00a0Telethon 1.45\u00a0\u044d\u0442\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435\u0442. \u041e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c,\u00a0\u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a <em>TLObject<\/em> \u0441\u00a0\u043c\u0435\u0442\u043e\u0434\u043e\u043c <em>bytes()<\/em>:<em> <\/em>\u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u0430\u0439\u0442\u0430 ID \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u044f \u0432\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0441\u0445\u0435\u043c\u044b. \u0421\u0442\u0440\u043e\u043a\u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0441\u0430\u043c Telethon \u0447\u0435\u0440\u0435\u0437 <em>serializebytes<\/em>.<\/p>\n<pre><code class=\"python\">import structfrom telethon import functionsfrom telethon.tl.tlobject import TLObjectclass InputMediaWidget(TLObject):    \"\"\"inputMediaWidget#44f6c04e flags:# allow_queries:flags.0?true shared_widget:flags.1?true    width:int height:int html:string public_data:flags.2?string chat_data:flags.3?string = InputMedia\"\"\"    CONSTRUCTOR_ID, SUBCLASS_OF_ID = 0x44F6C04E, 0xFAF846F4    def __init__(self, html, width=430, height=580, allow_queries=True):        self.html, self.width, self.height, self.allow_queries = html, width, height, allow_queries    def to_dict(self):        return {\"_\": \"InputMediaWidget\", \"width\": self.width, \"height\": self.height}    def _bytes(self):        flags = 1 if self.allow_queries else 0        return struct.pack(\"&lt;IIii\", self.CONSTRUCTOR_ID, flags, self.width, self.height) \\            + self.serialize_bytes(self.html)await client(functions.messages.SendMediaRequest(peer=chat_id, media=InputMediaWidget(html), message=\"\"))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0442\u0438\u043f\u044b \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u043a\u043b\u0430\u0441\u0441 \u0441\u00a0\u043c\u0435\u0442\u043e\u0434\u043e\u043c <em>from_reader<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u043e\u043b\u044f \u0438\u0437 <em>BinaryReader<\/em>, \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432\u00a0\u0441\u043b\u043e\u0432\u0430\u0440\u0435 <a href=\"http:\/\/telethon.tl\" rel=\"noopener nofollow\"><em>telethon.tl<\/em><\/a><em>.alltlobjects.tlobjects<\/em>. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u0434\u0435\u0439\u0442 \u043c\u043e\u0436\u043d\u043e \u043b\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 events.Raw.<\/p>\n<pre><code class=\"python\">from telethon import eventsfrom telethon.tl import alltlobjectsfrom telethon.tl.tlobject import TLObject, TLRequestclass UpdateBotWidgetQuery(TLObject):    \"\"\"updateBotWidgetQuery#b373fe68 flags:# query_id:long query_type:WidgetQueryType user_id:long peer:Peer    msg_id:int chat_instance:long chat_type:string data:bytes widget_id:flags.0?long wallet_card:flags.1?wallet.Card\"\"\"    CONSTRUCTOR_ID, SUBCLASS_OF_ID = 0xB373FE68, 0x9F89304E    @classmethod    def from_reader(cls, r):        o = cls()        flags = r.read_int()        o.query_id, o.query_type, o.user_id = r.read_long(), r.tgread_object(), r.read_long()        o.peer, o.msg_id, o.chat_instance = r.tgread_object(), r.read_int(), r.read_long()        o.chat_type, o.data = r.tgread_string(), r.tgread_bytes()        o.widget_id = r.read_long() if flags &amp; 1 else None        o.wallet_card = r.tgread_object() if flags &amp; 2 else None        return oclass SetBotWidgetQueryAnswerRequest(TLRequest):    \"\"\"messages.setBotWidgetQueryAnswer#f8cdec6a flags:# query_id:long result:flags.0?string = Bool\"\"\"    CONSTRUCTOR_ID, SUBCLASS_OF_ID = 0xF8CDEC6A, 0xF5B399AC    def __init__(self, query_id, result):        self.query_id, self.result = query_id, result    def _bytes(self):        return struct.pack(\"&lt;IIq\", self.CONSTRUCTOR_ID, 1, self.query_id) + self.serialize_bytes(self.result)alltlobjects.tlobjects[UpdateBotWidgetQuery.CONSTRUCTOR_ID] = UpdateBotWidgetQuery# query_type - \u0442\u043e\u0436\u0435 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f: widgetQueryTypeData#16d8cf0b, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435@client.on(events.Raw(UpdateBotWidgetQuery))async def on_query(update):    data = update.data.decode()    await client(SetBotWidgetQueryAnswerRequest(update.query_id, '{\"ok\": true}'))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430:<\/p>\n<pre><code class=\"python\">TelegramWidget.request('s:' + score).then(a =&gt; showTop(JSON.parse(a.result)))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h3>\u0412\u0438\u0434\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0430\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0435\u00a0\u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442<\/h3>\n<p>\u0421\u00a0\u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0432\u0438\u0434\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0441\u00a0\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430. \u0410\u00a0\u0432\u043e\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0434\u043e\u00a0\u0431\u043e\u0442\u0430 \u043d\u0435\u00a0\u0434\u043e\u0445\u043e\u0434\u0438\u043b\u0438: \u0438\u0433\u0440\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 request, \u0443\u00a0\u0431\u043e\u0442\u0430 \u0442\u0438\u0448\u0438\u043d\u0430, \u0447\u0435\u0440\u0435\u0437 15\u00a0\u0441\u0435\u043a\u0443\u043d\u0434 \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 TIMEOUT.<\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432\u00a0\u0441\u043b\u043e\u0435. \u041f\u0440\u0438\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u043d\u0430\u00a0\u043a\u0430\u043a\u043e\u043c \u0441\u043b\u043e\u0435 \u0441\u0445\u0435\u043c\u044b \u043e\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442 (invokeWithLayer). Telethon 1.45\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c 229-\u0433\u043e \u0441\u043b\u043e\u044f, \u0430\u00a0updateBotWidgetQuery \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u043a\u0442\u043e \u043d\u0430 233-\u043c. \u041b\u0435\u0447\u0438\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0434\u043e\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430:<\/p>\n<pre><code class=\"python\">import telethon.client.telegrambaseclient as tbctbc.LAYER = 233<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u00a0\u0441\u0443\u0442\u0438, \u0431\u043e\u0442 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u0441\u0435\u0442\u044c \u0441\u00a0\u043f\u043e\u0434\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043e\u043c. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e\u00a0\u0443\u00a0\u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0446\u0435\u043d\u0430.<\/p>\n<h2>\u0426\u0435\u043d\u0430 \u043f\u043e\u0434\u043c\u0435\u043d\u044b: \u0431\u043e\u0442 \u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u00a0\u043a\u0430\u043d\u0430\u043b<\/h2>\n<p>\u0421\u043a\u0430\u0437\u0430\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u00ab\u044f \u043d\u0430 233-\u043c \u0441\u043b\u043e\u0435\u00bb, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u043e\u0442\u00a0\u043d\u0435\u0433\u043e \u0432 233-\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0451, \u0430\u00a0\u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u044b. \u0422\u0438\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u043c\u0435\u0436\u0434\u0443 229\u00a0\u0438 233, Telethon \u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442 \u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u00a0\u043d\u0438\u0445 \u0441\u00a0TypeNotFoundError.<\/p>\n<p>\u041f\u043e\u043a\u0430 \u0431\u043e\u0442 \u0436\u0438\u043b \u0432\u00a0\u043b\u0438\u0447\u043a\u0435, \u044d\u0442\u043e \u043d\u0435\u00a0\u043c\u0435\u0448\u0430\u043b\u043e. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u044b\u043b\u0435\u0437\u043b\u0430, \u043a\u043e\u0433\u0434\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u00a0\u0438\u0433\u0440\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u043e\u0432 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430. \u0427\u0442\u043e\u0431\u044b \u0431\u043e\u0442 \u0432\u0438\u0434\u0435\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u043e\u0432, \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u0430. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Telethon \u0434\u0435\u043b\u0430\u0435\u0442 updates.getDifference, \u0432\u00a0\u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u0430\u043d\u0430\u043b\u0430, \u0438 \u0431\u043e\u0442 \u043f\u0430\u0434\u0430\u0435\u0442:<\/p>\n<blockquote>\n<p>telethon.errors.common.TypeNotFoundError: Could not find a matching Constructor ID for the TLObject that was supposed to be read with ID 7ad15240.<\/p>\n<\/blockquote>\n<p>Docker \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0431\u043e\u0442 \u0441\u043d\u043e\u0432\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u00a0\u0441\u0442\u0430\u0440\u0442\u0435. \u0421\u043d\u0430\u0440\u0443\u0436\u0438 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u0431\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c.<\/p>\n<p>\u0427\u0438\u043d\u0438\u0442\u0441\u044f \u044d\u0442\u043e \u0437\u0430\u00a0\u043f\u043e\u043b\u0447\u0430\u0441\u0430, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0442\u044c, \u0433\u0434\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. 7ad15240\u00a0\u0438\u0449\u0435\u043c \u0432 <a href=\"http:\/\/api.tl\" rel=\"noopener nofollow\">api.tl<\/a> Telegram Desktop\u00a0\u2014 \u044d\u0442\u043e channel. \u041f\u043e\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0441\u00a0\u0442\u0435\u043c, \u043a\u0430\u043a\u00a0\u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u0447\u0438\u0442\u0430\u0435\u0442 Telethon (inspect.getsource(<a href=\"http:\/\/types.Channel\" rel=\"noopener nofollow\">types.Channel<\/a>.from_reader)). \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439: \u0432\u043e\u00a0\u0432\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u0435 \u0444\u043b\u0430\u0433\u043e\u0432 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0431\u0438\u0442\u044b 21\u00a0\u0438 23\u00a0\u0431\u0435\u0437\u00a0\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u0435 pinned_msg_id:flags2.22?int \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435. \u0417\u043d\u0430\u0447\u0438\u0442, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0434\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0440\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 Telethon \u0438 \u0434\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0445\u0432\u043e\u0441\u0442 \u0441\u0430\u043c\u043e\u043c\u0443:<\/p>\n<pre><code class=\"python\">from telethon.tl import alltlobjects, typesclass Channel233(types.Channel):    \"\"\"channel#7ad15240 (233) = channel \u0438\u0437 Telethon (229) + pinned_msg_id:flags2.22?int \u0432 \u043a\u043e\u043d\u0446\u0435\"\"\"    CONSTRUCTOR_ID = 0x7AD15240    @classmethod    def from_reader(cls, reader):        pos = reader.tell_position()        reader.read_int()              # flags        flags2 = reader.read_int()        reader.set_position(pos)        obj = types.Channel.from_reader(reader)        if flags2 &amp; (1 &lt;&lt; 22):            reader.read_int()          # pinned_msg_id        return objalltlobjects.tlobjects[Channel233.CONSTRUCTOR_ID] = Channel233<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043c\u00a0\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043b messageReplyHeader: \u0432 233-\u043c \u0441\u043b\u043e\u0435 \u0432\u00a0\u043a\u043e\u043d\u0446\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u043e\u0441\u044c quote_rich:flags.14?Vector, \u0438 \u0431\u0435\u0437\u00a0\u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0431\u043e\u0442 \u0443\u043f\u0430\u043b\u00a0\u0431\u044b, \u043a\u0430\u043a\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0442\u043e\u2011\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u043d\u0430\u00a0\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0436\u0434\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 233-\u0433\u043e \u0441\u043b\u043e\u044f Telethon \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442:<\/p>\n<pre><code class=\"python\">import refrom telethon.tl import alltlobjectsknown = set(alltlobjects.tlobjects)for line in open(\"api.tl\", encoding=\"utf-8\"):    if line.startswith(\"---functions\"):        break    m = re.match(r\"^([\\w.]+)#([0-9a-f]+) .*= ([\\w.]+);\", line)    if m and int(m.group(2), 16) not in known:        print(m.group(3), m.group(1))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423\u00a0\u043c\u0435\u043d\u044f \u0442\u0430\u043a\u0438\u0445 \u043d\u0430\u0431\u0440\u0430\u043b\u043e\u0441\u044c 95. \u0418\u0437\u00a0\u0442\u0435\u0445, \u0447\u0442\u043e\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u044e\u0442 \u0431\u043e\u0442\u0443,\u00a0\u2014 channel, channelFull, userFull, messageReplyHeader, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435\u00a0\u2014 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0438, \u0442\u0435\u043c\u044b \u0444\u043e\u0440\u0443\u043c\u043e\u0432 \u0438 \u0441\u0430\u043c\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u044b. \u041f\u043e\u043b\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0430 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u043e\u0442 \u0441\u0430\u043c \u043d\u0435\u00a0\u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0438\u0445 \u044f \u043f\u043e\u043a\u0430 \u043d\u0435\u00a0\u0442\u0440\u043e\u0433\u0430\u043b.<\/p>\n<h2>\u0412\u0441\u0451, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u043f\u0440\u043e\u00a0\u0432\u0438\u0434\u0436\u0435\u0442\u044b,\u00a0\u2014 \u0447\u0435\u0440\u0435\u0437 Bot API<\/h2>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 \u043f\u0430\u0434\u0435\u043d\u0438\u044f: \u0432\u0441\u0451, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432, \u043d\u0430\u0434\u0451\u0436\u043d\u0435\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Bot API \u0442\u0435\u043c\u00a0\u0436\u0435 \u0442\u043e\u043a\u0435\u043d\u043e\u043c. \u041e\u043d \u043d\u0435\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442\u00a0\u043f\u043e\u0434\u043c\u0435\u043d\u044b \u0441\u043b\u043e\u044f, \u0438 MTProto\u2011\u0441\u0435\u0441\u0441\u0438\u044f \u0435\u043c\u0443 \u043d\u0435\u00a0\u043c\u0435\u0448\u0430\u0435\u0442.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438\u00a0\u2014 getChatMember. \u0411\u043e\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u0430, \u0438\u043d\u0430\u0447\u0435 Telegram \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 member list is inaccessible. \u041f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u00a0\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0445. \u041c\u0435\u043d\u044e \u043a\u043e\u043c\u0430\u043d\u0434 \u043f\u0440\u0438\u00a0\u0432\u0432\u043e\u0434\u0435 \u00ab\/\u00bb\u00a0\u2014 setMyCommands. \u0421\u00a0scope \u0442\u0438\u043f\u0430 chat \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0431\u0435. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0438\u0434\u043d\u043e \u0434\u043e \/start,\u00a0\u2014 setMyDescription. \u042f \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0442\u0443\u0434\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043b\u0438\u0434\u0435\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u0432. \u0418 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043c\u0435\u043b\u043e\u0447\u044c \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438: \u043f\u043e\u0441\u043b\u0435 \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u2011\u0441\u0442\u043e\u0440\u043e\u0436. \u041e\u043d \u0440\u0430\u0437 \u0432 2\u00a0\u043c\u0438\u043d\u0443\u0442\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430\u00a0\u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0438 \u043f\u0438\u0448\u0435\u0442 \u043c\u043d\u0435 \u0432\u00a0Telegram \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442\u00a0\u0436\u0435 Bot API. \u0411\u043e\u0442 \u043c\u043e\u0436\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c, \u0430\u00a0Bot API \u0443\u00a0\u0441\u0442\u043e\u0440\u043e\u0436\u0430 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h2>\u0427\u0442\u043e\u00a0\u0443\u043c\u0435\u0435\u0442 \u0434\u0432\u0438\u0436\u043e\u043a \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432<\/h2>\n<p>\u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0440\u043e\u0431\u043d\u0438\u043a: \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 CSS, \u0447\u0442\u043e\u00a0\u0435\u0441\u0442\u044c \u0432\u00a0TelegramWidget, \u0438 \u0443\u043c\u0435\u0435\u0442 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0431\u043e\u0442\u0430. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430\u00a0Telegram Desktop \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0445, \u043d\u043e\u044f\u0431\u0440\u044c 2026:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0427\u0442\u043e<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041a\u0430\u043a\u00a0\u043d\u0430 \u0434\u0435\u043b\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0420\u0430\u0437\u043c\u0435\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0434\u0438\u043d HTML \u0434\u043e 32\u00a0\u041a\u0411 \u0438 \u0434\u043e 4\u00a0\u041a\u0411 \u0432\u00a0\u0441\u0436\u0430\u0442\u043e\u043c \u0432\u0438\u0434\u0435. \u0421\u0435\u0440\u0432\u0435\u0440 \u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a\u00a0PHP\u00a0<code>gzcompress<\/code>\u00a0\u0443\u0440\u043e\u0432\u043d\u044f 9, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0447\u0435\u0440\u0435\u0437\u00a0<code>zlib.compress(html, 9)<\/code> <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0428\u0438\u0440\u0438\u043d\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0420\u0430\u0432\u043d\u0430 \u0448\u0438\u0440\u0438\u043d\u0435 \u043f\u0443\u0437\u044b\u0440\u044f: 430\u00a0px \u043d\u0430\u00a0\u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0435, \u043e\u043a\u043e\u043b\u043e 362\u00a0px \u043d\u0430\u00a0\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435. \u0412\u0435\u0440\u0441\u0442\u0430\u0442\u044c \u0432\u00a0\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u044b\u0441\u043e\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u00a0<code>inputMediaWidget<\/code>, \u0434\u043e 600\u00a0px<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">CSS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0415\u0441\u0442\u044c flex, grid,\u00a0<code>min()<\/code>,\u00a0<code>clamp()<\/code>, SVG, CSS\u2011\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438. \u041d\u0435\u0442\u00a0<code>vh<\/code>\/<code>vmin<\/code>: \u0432\u044b\u0441\u043e\u0442\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0443\u043b\u0435\u0432\u043e\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442: \u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a, \u043d\u0438 \u0448\u0440\u0438\u0444\u0442\u043e\u0432, \u043d\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0422\u043e\u043b\u044c\u043a\u043e\u00a0<code>data:<\/code>\u00a0\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 SVG <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u043a\u0440\u0438\u043f\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u043e\u043b\u044c\u0448\u0435 500\u00a0\u043c\u0441 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b\u00a0\u2014 \u00ab\u0412\u0438\u0434\u0436\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u00bb<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>localStorage<\/code>\u00a0\u0441\u0432\u043e\u0451 \u0443\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0434\u043e 4\u00a0\u041a\u0411 <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0430\u043f\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0434\u0438\u043d \u0442\u0430\u043f \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432:\u00a0<code>request<\/code>,\u00a0<code>openLink<\/code>\u00a0\u0438\u043b\u0438\u00a0<code>openTelegramLink<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0411\u0435\u0437\u00a0\u0442\u0430\u043f\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u043e\u043b\u044c\u043a\u043e \u0432\u00a0\u043b\u0438\u0447\u043a\u0435 \u0441\u00a0\u0431\u043e\u0442\u043e\u043c: \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u0440\u0438\u00a0\u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438, \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0447\u0430\u0449\u0435 \u0440\u0430\u0437\u0430 \u0432 5\u00a0\u0441\u0435\u043a\u0443\u043d\u0434<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"bordered full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/8f\/fe\/57\/8ffe57fe95de928363c0c60e7456a2ed.png\" alt=\"\u041f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u043a\u0430\u0445, \u0445\u043e\u0442\u044f \u043d\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0435 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043d\u0430\u0448\u0451\u043b\" title=\"\u041f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u043a\u0430\u0445, \u0445\u043e\u0442\u044f \u043d\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0435 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043d\u0430\u0448\u0451\u043b\" width=\"960\" height=\"1280\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/8f\/fe\/57\/8ffe57fe95de928363c0c60e7456a2ed.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/8f\/fe\/57\/8ffe57fe95de928363c0c60e7456a2ed.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u00a0\u043c\u043e\u0431\u0438\u043b\u043a\u0430\u0445, \u0445\u043e\u0442\u044f \u043d\u0430\u00a0\u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0435 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438\u0437\u2011\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u043d\u0438\u0433\u0434\u0435 \u043d\u0435\u00a0\u043d\u0430\u0448\u0451\u043b<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u043e \u00ab\u0412\u0438\u0434\u0436\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u00bb \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u042f \u0441\u0434\u0435\u043b\u0430\u043b \u0431\u0440\u044b\u0437\u0433\u0438 \u043f\u0440\u0438\u00a0\u0432\u0437\u0440\u044b\u0432\u0435 \u0431\u0443\u0442\u044b\u043b\u043a\u0438: 30\u00a0\u043a\u0430\u043f\u0435\u043b\u044c, \u0443\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u043e\u0439 \u0442\u0430\u0439\u043c\u0435\u0440. \u0412\u0438\u0434\u0436\u0435\u0442 \u043f\u0430\u0434\u0430\u043b \u043d\u0430\u00a0\u043f\u0435\u0440\u0432\u043e\u043c\u00a0\u0436\u0435 \u0432\u0437\u0440\u044b\u0432\u0435. \u0421\u0432\u0451\u043b \u0432\u0441\u0451 \u0432\u00a0\u043e\u0434\u0438\u043d \u043e\u0431\u0449\u0438\u0439 \u0446\u0438\u043a\u043b \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438\u00a0\u2014 \u043f\u0440\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f \u0434\u043e\u00a0\u0432\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0442\u044b\u043b\u043a\u0438. \u041f\u043e\u043c\u043e\u0433\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0443\u044e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u043d\u0430\u00a0JS \u0441\u043e\u0432\u0441\u0435\u043c: \u0431\u0440\u044b\u0437\u0433\u0438 \u0441\u0442\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439, \u0430\u00a0\u0431\u0443\u0442\u044b\u043b\u043a\u0430 \u043a\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0440\u0430\u0437\u043e\u0432\u044b\u043c setTimeout.<\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430\u044f \u0432\u0435\u0449\u044c\u00a0\u2014 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043f\u0430. \u041f\u043e\u00a0\u043d\u0430\u0434\u043f\u0438\u0441\u0438 \u043d\u0430\u00a0\u0431\u0443\u0442\u044b\u043b\u043a\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043d\u0430\u043b \u0447\u0435\u0440\u0435\u0437 openTelegramLink, \u0438 \u044d\u0442\u043e\u0442 \u0442\u0430\u043f \u0443\u0436\u0435 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d. \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u0442\u0443 \u043a\u043b\u0438\u043a \u0432\u00a0\u0442\u043e\u043c\u00a0\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043d\u0435\u043b\u044c\u0437\u044f: \u0432\u044b\u0437\u043e\u0432 \u043c\u043e\u043b\u0447\u0430 \u043d\u0435\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043b\u0438\u043a \u043a\u043e\u043f\u0438\u0442\u0441\u044f \u0432\u00a0localStorage \u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u0431\u043e\u0442\u0443 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c.<\/p>\n<h2>\u041a\u0443\u0434\u0430 \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u0443\u0441\u043a\u0430\u044e\u0442<\/h2>\n<p>\u041f\u043e\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0436\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043b\u0430\u0442\u044c \u0432\u00a0\u043b\u044e\u0431\u043e\u0439 \u0447\u0430\u0442, \u0431\u043e\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0441\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u043b\u0430\u0439\u043d\u2011\u0440\u0435\u0436\u0438\u043c \u043a\u0443\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e, \u0430\u00a0\u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e\u00a0\u2014 \u0432\u00a0\u043b\u0438\u0447\u043a\u0443 \u0438 \u0432\u00a0\u0433\u0440\u0443\u043f\u043f\u044b. \u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0443\u0442\u044c.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"185\" width=\"185\">\n<p align=\"left\"><strong>\u041a\u0443\u0434\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041d\u0430\u00a0\u0434\u0435\u043b\u0435<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041a\u0430\u043a\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"185\" width=\"185\">\n<p align=\"left\">\u041b\u0438\u0447\u043a\u0430 \u0441\u00a0\u0431\u043e\u0442\u043e\u043c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043c\u043e\u0436\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"185\" width=\"185\">\n<p align=\"left\">\u041f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0430 \u0438\u0437\u00a0\u043b\u0438\u0447\u043a\u0438 <\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043c\u043e\u0436\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u043b\u044c\u0437\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u0432\u0438\u0434\u0436\u0435\u0442 \u0432\u043e\u00a0\u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f\u0445\u00a0<code>allow_queries<\/code>\u00a0\u0438\u00a0<code>shared_widget<\/code>: \u0441\u0435\u0440\u0432\u0435\u0440 \u0443\u00a0\u0432\u0441\u0435\u0445 \u0432\u0435\u0440\u043d\u0443\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441\u00a0<code>noforwards<\/code>. \u0411\u043e\u0442 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u043d\u0435\u00a0\u0441\u0442\u0430\u0432\u0438\u0442, \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u0431\u043e\u0442\u0430 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"185\" width=\"185\">\n<p align=\"left\">\u0418\u043d\u043b\u0430\u0439\u043d,\u00a0<code>@\u0431\u043e\u0442<\/code>\u00a0\u0432\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u0447\u0430\u0442\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043c\u043e\u0436\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>INPUT_MEDIA_WIDGET_NOT_ALLOWED<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>messages.setInlineBotResults<\/code>\u00a0\u0441\u00a0<code>inputBotInlineMessageWidget<\/code> <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"185\" width=\"185\">\n<p align=\"left\">\u041a\u0430\u043d\u0430\u043b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u043e\u043a\u0430 \u043d\u0435\u043b\u044c\u0437\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>INPUT_MEDIA_WIDGET_NOT_ALLOWED<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u043e\u0442\u00a0\u2014 \u0430\u0434\u043c\u0438\u043d \u0441\u00a0\u043f\u0440\u0430\u0432\u043e\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"185\" width=\"185\">\n<p align=\"left\">\u0413\u0440\u0443\u043f\u043f\u0430 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u0430\u043d\u0430\u043b\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043c\u043e\u0436\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>INPUT_MEDIA_WIDGET_NOT_ALLOWED<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u043e\u0442\u00a0\u2014 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u0433\u0440\u0443\u043f\u043f\u044b <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u0445\u043e\u0436\u0435, \u043d\u0430\u00a0\u0431\u0435\u0442\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u00a0\u043b\u0438\u0447\u043a\u0435 \u0441\u00a0\u0431\u043e\u0442\u043e\u043c. \u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435: \u0438\u0433\u0440\u0430 \u043d\u0435\u00a0\u0440\u0430\u0437\u043b\u0435\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430, \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430\u00a0\u0431\u043e\u0442\u0430. \u0412\u00a0\u043a\u0430\u043d\u0430\u043b \u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u0441\u0442 \u0441\u00a0\u0433\u0438\u0444\u043a\u043e\u0439 \u0438 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u00ab\u0418\u0433\u0440\u0430\u0442\u044c\u00bb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0434\u0451\u0442 \u0432\u00a0\u0431\u043e\u0442\u0430.<\/p>\n<h2>\u0418\u0442\u043e\u0433\u043e<\/h2>\n<p>\u0412\u0438\u0434\u0436\u0435\u0442\u044b\u00a0\u2014 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u0434\u043b\u044f\u00a0\u043c\u0438\u043d\u0438\u2011\u0438\u0433\u0440, \u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043c\u0435\u043b\u043a\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u043f\u0440\u044f\u043c\u043e \u0432\u00a0\u0447\u0430\u0442\u0435, \u043d\u043e\u00a0\u043f\u043e\u043a\u0430 \u044d\u0442\u043e \u0431\u0435\u0442\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f\u043c\u0438. \u0421\u0445\u0435\u043c\u0430 \u0432\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043e \u0441\u0445\u0435\u043c\u043e\u0439 \u0432\u00a0\u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0430 \u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u0437\u0430\u043a\u0440\u044b\u0442\u044b, \u0430\u00a0\u0441\u0430\u043c \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u043f\u043e\u0434\u043c\u0435\u043d\u0435 \u0441\u043b\u043e\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0438 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041a\u043e\u0433\u0434\u0430 Bot API 10.4\u00a0\u0432\u044b\u0439\u0434\u0435\u0442 \u0438\u0437\u00a0\u0431\u0435\u0442\u044b, \u0432\u0441\u0451 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441, \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u0448\u0430\u0431\u043b\u043e\u043d: \u0431\u043e\u0442 \u043d\u0430\u00a0Telethon, \u0432\u0441\u0435 \u0442\u0438\u043f\u044b \u0441\u00a0\u043f\u0430\u0440\u0441\u0435\u0440\u0430\u043c\u0438 \u0434\u043b\u044f 233-\u0433\u043e \u0441\u043b\u043e\u044f, \u043f\u0440\u043e\u0431\u043d\u0438\u043a \u0434\u0432\u0438\u0436\u043a\u0430 \u0438 \u0441\u0442\u043e\u0440\u043e\u0436, \u0437\u0430\u043f\u0443\u0441\u043a \u0447\u0435\u0440\u0435\u0437 Docker. \u041f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0441\u0432\u043e\u0439 HTML \u0438 \u0441\u0432\u043e\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u043e\u0442\u0432\u0435\u0442\u0430: <a href=\"http:\/\/github.com\/fedor-barulin\/shipuchka-widget-bot\" rel=\"noopener nofollow\">github.com\/fedor\u2011barulin\/shipuchka\u2011widget\u2011bot<\/a>.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1105576\/\">https:\/\/habr.com\/ru\/articles\/1105576\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u00a0Telegram \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c HTMLBubbles: \u0432\u0438\u0434\u0436\u0435\u0442\u044b, \u0433\u0434\u0435 \u0431\u043e\u0442 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0432\u0435\u0431\u2011\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c. \u0412\u00a0\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c Bot API 10.3\u00a0\u043c\u0435\u0442\u043e\u0434\u0430 \u0434\u043b\u044f\u00a0\u043d\u0438\u0445 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442, \u043d\u043e\u00a0\u0432\u00a0\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 MTProto \u043e\u043d\u0438 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c. \u042f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u0441\u0432\u043e\u044e \u043c\u0438\u043d\u0438\u2011\u0438\u0433\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 Telethon, \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0441\u043b\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0438 \u0441\u043e\u0431\u0440\u0430\u043b \u043f\u043e\u00a0\u0434\u043e\u0440\u043e\u0433\u0435 \u0432\u0441\u0435 \u0433\u0440\u0430\u0431\u043b\u0438: \u0441\u0445\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0430\u0434\u0430\u0435\u0442 \u043e\u0442\u00a0\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430, \u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u00a0\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0442\u0443\u0434\u0430, \u043a\u0443\u0434\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442. \u041d\u0438\u0436\u0435\u00a0\u2014 \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u0434 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u00a0\u0442\u0435\u043c, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u0440\u0443\u043a\u0430\u043c\u0438.\u0427\u0442\u043e\u00a0\u0442\u0430\u043a\u043e\u0435 \u0432\u0438\u0434\u0436\u0435\u0442 \u0438 \u0447\u0442\u043e\u00a0\u043e\u043d \u0443\u043c\u0435\u0435\u0442\u0412\u0438\u0434\u0436\u0435\u0442 (\u0432 \u043e\u0431\u0438\u0445\u043e\u0434\u0435 HTMLBubbles)\u00a0\u2014 \u044d\u0442\u043e \u043e\u0434\u0438\u043d HTML\u2011\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u0442 \u043a\u043b\u0430\u0434\u0451\u0442 \u0432\u00a0\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u00a0\u043c\u0435\u0434\u0438\u0430. \u041a\u043b\u0438\u0435\u043d\u0442 \u0440\u0438\u0441\u0443\u0435\u0442 \u0435\u0433\u043e \u043f\u0440\u044f\u043c\u043e \u0432\u00a0\u043f\u0443\u0437\u044b\u0440\u0435 \u0447\u0430\u0442\u0430: \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c Mini App, \u043d\u0435\u00a0\u043d\u0443\u0436\u0435\u043d \u0445\u043e\u0441\u0442\u0438\u043d\u0433, \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0435\u0434\u0435\u0442 \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438. Telegram \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0432\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 TelegramMessenger\/widget\u2011sandbox: \u0432\u00a0\u0434\u0435\u043c\u043e \u0442\u0430\u043c \u0444\u043e\u0440\u043c\u0430 \u0437\u0430\u043a\u0430\u0437\u0430, \u043e\u043f\u0440\u043e\u0441, \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043a\u0440\u0435\u0441\u0442\u0438\u043a\u0438\u2011\u043d\u043e\u043b\u0438\u043a\u0438 \u0438 \u0431\u0435\u0433\u0443\u0449\u0438\u0439 \u043a\u0443\u0440\u0441.\u0412\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 TelegramWidget. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0432\u00a0\u043d\u0451\u043c:request(data)\u00a0\u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043e 64\u00a0\u0431\u0430\u0439\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u0434\u043e 1\u00a0\u041a\u0411; openLink(url) \u0438 openTelegramLink(url)\u00a0\u2014 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 (\u043e\u0431\u044b\u0447\u043d\u0430\u044f\u00a0\u2014 \u0441\u00a0\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c, t.me\u00a0\u2014 \u0441\u0440\u0430\u0437\u0443); chatData \u0438 publicData\u00a0\u2014 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0438\u0448\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u0442: \u043e\u0434\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043e \u043a\u00a0\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044e \u0432\u00a0\u0447\u0430\u0442\u0435, \u0432\u0442\u043e\u0440\u043e\u0435 \u0432\u0438\u0434\u043d\u043e \u0432\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0432\u0438\u0434\u0436\u0435\u0442; viewer, chatType, isForward\u00a0\u2014 \u043a\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0438 \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u042f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u0432\u0441\u0451 \u043d\u0430\u00a0\u043c\u0438\u043d\u0438\u2011\u0438\u0433\u0440\u0435: \u0442\u0440\u044f\u0441\u0451\u0448\u044c \u0431\u0443\u0442\u044b\u043b\u043a\u0443 \u0433\u0430\u0437\u0438\u0440\u043e\u0432\u043a\u0438, \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0441\u0442\u0451\u0442, \u0432\u043e\u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u0440\u044b\u043b\u00a0\u2014 \u0437\u0430\u0431\u0440\u0430\u043b \u043e\u0447\u043a\u0438, \u043f\u0435\u0440\u0435\u0434\u0435\u0440\u0436\u0430\u043b\u00a0\u2014 \u043a\u0440\u044b\u0448\u043a\u0443 \u0441\u043e\u0440\u0432\u0430\u043b\u043e. \u041f\u044f\u0442\u044c \u0431\u0443\u0442\u044b\u043b\u043e\u043a \u0437\u0430\u00a0\u043f\u0430\u0440\u0442\u0438\u044e \u0438 \u043e\u0431\u0449\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u043e\u0442. \u0416\u0438\u0432\u043e\u0439 \u0431\u043e\u0442 \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: @game_barulin_cv_bot. \u0415\u0441\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0422\u0413 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u00abunsupported message\u00bb, \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c.\u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430\u00a0\u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0445\u041c\u043e\u0439 \u0434\u0435\u043c\u043e\u2011\u0432\u0438\u0434\u0436\u0435\u0442 \u0432\u00a0\u0447\u0430\u0442\u0435\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u00a0Bot API\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Bot API \u043d\u0430\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u00a0\u2014 10.3, \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0432\u00a0\u043d\u0435\u0439 \u043d\u0435\u0442. \u0412\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u043e\u043f\u0438\u0441\u0430\u043d Bot API 10.4\u00a0\u0441\u00a0\u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 sendWidget, answerWidgetQuery, editMessageWidgetData \u0438 \u0430\u043f\u0434\u0435\u0439\u0442\u043e\u043c widget_query, \u043d\u043e\u00a0\u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u00a0\u0431\u0435\u0442\u0430\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0431\u043e\u0442 \u043d\u0430\u00a0aiogram \u0438\u043b\u0438\u00a0python\u2011telegram\u2011bot \u0432\u0438\u0434\u0436\u0435\u0442 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0435\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442.\u0417\u0430\u0442\u043e \u0432\u00a0MTProto \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0435\u0441\u0442\u044c \u0441 233-\u0433\u043e \u0441\u043b\u043e\u044f. \u0411\u043e\u0442 \u043c\u043e\u0436\u0435\u0442 \u0445\u043e\u0434\u0438\u0442\u044c \u0432\u00a0MTProto \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e\u00a0\u0441\u0432\u043e\u0435\u043c\u0443 \u0442\u043e\u043a\u0435\u043d\u0443: \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 Telethon \u0438 Pyrogram. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0437\u0430\u00a0\u043d\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b.\u0413\u0434\u0435 \u0431\u0440\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443: \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0432\u0440\u0451\u0442\u041f\u0435\u0440\u0432\u043e\u0435, \u043d\u0430\u00a0\u0447\u0442\u043e\u00a0\u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f: \u0441\u0445\u0435\u043c\u0430 \u0432\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b (docs\/tgw\u2011format.md) \u043d\u0435\u00a0\u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u043e \u0441\u0445\u0435\u043c\u043e\u0439 \u0432\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 Telegram Desktop (Telegram\/SourceFiles\/mtproto\/scheme\/api.tl).\u0412\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438:inputMediaWidget#44f6c04e flags:# allow_queries:flags.0?true shared_widget:flags.1?true width:int height:int html:string public_data:flags.2?string chat_data:flags.3?string = InputMedia;\u0424\u043b\u0430\u0433\u0438 \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044b, fwd_allow_queries \u043f\u0440\u043e\u043f\u0430\u043b, \u0430\u00a0ID \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u00a0\u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0445\u0435\u043c\u044b, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043e\u043d \u0442\u043e\u0436\u0435 \u0440\u0430\u0437\u043d\u044b\u0439. \u0421\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0437\u00a0Desktop. \u041c\u043e\u0440\u0430\u043b\u044c: \u0441\u0445\u0435\u043c\u0443 \u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0437\u00a0\u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c Telegram \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0430\u043c, \u0430\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043a\u0430\u043a\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f.\u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0433\u0440\u044b \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u0432 \u043d\u0443\u0436\u043d\u044b \u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u0438\u043f\u0430:\u0422\u0438\u043f\u0417\u0430\u0447\u0435\u043cinputMediaWidget#44f6c04e \u0441\u0430\u043c \u0432\u0438\u0434\u0436\u0435\u0442: HTML, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0444\u043b\u0430\u0433\u00a0allow_queries. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u00a0messages.sendMedia messageMediaWidget#2238f214\u0442\u0430\u043a \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432\u00a0\u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f updateBotWidgetQuery#b373fe68\u0430\u043f\u0434\u0435\u0439\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u0438\u0434\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043b\u00a0TelegramWidget.request() messages.setBotWidgetQueryAnswer#f8cdec6a\u043e\u0442\u0432\u0435\u0442 \u0431\u043e\u0442\u0430, \u043d\u0430\u00a0\u043d\u0435\u0433\u043e 15\u00a0\u0441\u0435\u043a\u0443\u043d\u0434, \u0438\u043d\u0430\u0447\u0435 \u0443\u00a0\u0432\u0438\u0434\u0436\u0435\u0442\u0430\u00a0TIMEOUT \u0423\u0447\u0438\u043c Telethon \u043d\u043e\u0432\u044b\u043c \u0442\u0438\u043f\u0430\u043c\u0412\u00a0Telethon 1.45\u00a0\u044d\u0442\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435\u0442. \u041e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c,\u00a0\u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a TLObject \u0441\u00a0\u043c\u0435\u0442\u043e\u0434\u043e\u043c bytes(): \u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u0430\u0439\u0442\u0430 ID \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u044f \u0432\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0441\u0445\u0435\u043c\u044b. \u0421\u0442\u0440\u043e\u043a\u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0441\u0430\u043c Telethon \u0447\u0435\u0440\u0435\u0437 serializebytes.import structfrom telethon import functionsfrom telethon.tl.tlobject import TLObjectclass InputMediaWidget(TLObject):    &#171;&#187;&#187;inputMediaWidget#44f6c04e flags:# allow_queries:flags.0?true shared_widget:flags.1?true    width:int height:int html:string public_data:flags.2?string chat_data:flags.3?string = InputMedia&#187;&#187;&#187;    CONSTRUCTOR_ID, SUBCLASS_OF_ID = 0x44F6C04E, 0xFAF846F4    def __init__(self, html, width=430, height=580, allow_queries=True):        self.html, self.width, self.height, self.allow_queries = html, width, height, allow_queries    def to_dict(self):        return {&#171;_&#187;: &#171;InputMediaWidget&#187;, &#171;width&#187;: self.width, &#171;height&#187;: self.height}    def _bytes(self):        flags = 1 if self.allow_queries else 0        return struct.pack(&#171;&lt;IIii&#187;, self.CONSTRUCTOR_ID, flags, self.width, self.height) \\            + self.serialize_bytes(self.html)await client(functions.messages.SendMediaRequest(peer=chat_id, media=InputMediaWidget(html), message=&#187;&#187;))\u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0442\u0438\u043f\u044b \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u043a\u043b\u0430\u0441\u0441 \u0441\u00a0\u043c\u0435\u0442\u043e\u0434\u043e\u043c from_reader, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u043e\u043b\u044f \u0438\u0437 BinaryReader, \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432\u00a0\u0441\u043b\u043e\u0432\u0430\u0440\u0435 telethon.tl.alltlobjects.tlobjects. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u0434\u0435\u0439\u0442 \u043c\u043e\u0436\u043d\u043e \u043b\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 events.Raw.from telethon import eventsfrom telethon.tl import alltlobjectsfrom telethon.tl.tlobject import TLObject, TLRequestclass UpdateBotWidgetQuery(TLObject):    &#171;&#187;&#187;updateBotWidgetQuery#b373fe68 flags:# query_id:long query_type:WidgetQueryType user_id:long peer:Peer    msg_id:int chat_instance:long chat_type:string data:bytes widget_id:flags.0?long wallet_card:flags.1?wallet.Card&#187;&#187;&#187;    CONSTRUCTOR_ID, SUBCLASS_OF_ID = 0xB373FE68, 0x9F89304E    @classmethod    def from_reader(cls, r):        o = cls()        flags = r.read_int()        o.query_id, o.query_type, o.user_id = r.read_long(), r.tgread_object(), r.read_long()        o.peer, o.msg_id, o.chat_instance = r.tgread_object(), r.read_int(), r.read_long()        o.chat_type, o.data = r.tgread_string(), r.tgread_bytes()        o.widget_id = r.read_long() if flags &amp; 1 else None        o.wallet_card = r.tgread_object() if flags &amp; 2 else None        return oclass SetBotWidgetQueryAnswerRequest(TLRequest):    &#171;&#187;&#187;messages.setBotWidgetQueryAnswer#f8cdec6a flags:# query_id:long result:flags.0?string = Bool&#187;&#187;&#187;    CONSTRUCTOR_ID, SUBCLASS_OF_ID = 0xF8CDEC6A, 0xF5B399AC    def __init__(self, query_id, result):        self.query_id, self.result = query_id, result    def _bytes(self):        return struct.pack(&#171;&lt;IIq&#187;, self.CONSTRUCTOR_ID, 1, self.query_id) + self.serialize_bytes(self.result)alltlobjects.tlobjects[UpdateBotWidgetQuery.CONSTRUCTOR_ID] = UpdateBotWidgetQuery# query_type &#8212; \u0442\u043e\u0436\u0435 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f: widgetQueryTypeData#16d8cf0b, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435@client.on(events.Raw(UpdateBotWidgetQuery))async def on_query(update):    data = update.data.decode()    await client(SetBotWidgetQueryAnswerRequest(update.query_id, &#8216;{&#171;ok&#187;: true}&#8217;))\u041d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430:TelegramWidget.request(&#8216;s:&#8217; + score).then(a =&gt; showTop(JSON.parse(a.result)))\u0412\u0438\u0434\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0430\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0435\u00a0\u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442\u0421\u00a0\u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0432\u0438\u0434\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0441\u00a0\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430. \u0410\u00a0\u0432\u043e\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0434\u043e\u00a0\u0431\u043e\u0442\u0430 \u043d\u0435\u00a0\u0434\u043e\u0445\u043e\u0434\u0438\u043b\u0438: \u0438\u0433\u0440\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 request, \u0443\u00a0\u0431\u043e\u0442\u0430 \u0442\u0438\u0448\u0438\u043d\u0430, \u0447\u0435\u0440\u0435\u0437 15\u00a0\u0441\u0435\u043a\u0443\u043d\u0434 \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 TIMEOUT.\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432\u00a0\u0441\u043b\u043e\u0435. \u041f\u0440\u0438\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u043d\u0430\u00a0\u043a\u0430\u043a\u043e\u043c \u0441\u043b\u043e\u0435 \u0441\u0445\u0435\u043c\u044b \u043e\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442 (invokeWithLayer). Telethon 1.45\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c 229-\u0433\u043e \u0441\u043b\u043e\u044f, \u0430\u00a0updateBotWidgetQuery \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u043a\u0442\u043e \u043d\u0430 233-\u043c. \u041b\u0435\u0447\u0438\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0434\u043e\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430:import telethon.client.telegrambaseclient as tbctbc.LAYER = 233\u041f\u043e\u00a0\u0441\u0443\u0442\u0438, \u0431\u043e\u0442 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u0441\u0435\u0442\u044c \u0441\u00a0\u043f\u043e\u0434\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043e\u043c. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e\u00a0\u0443\u00a0\u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0446\u0435\u043d\u0430.\u0426\u0435\u043d\u0430 \u043f\u043e\u0434\u043c\u0435\u043d\u044b: \u0431\u043e\u0442 \u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u00a0\u043a\u0430\u043d\u0430\u043b\u0421\u043a\u0430\u0437\u0430\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u00ab\u044f \u043d\u0430 233-\u043c \u0441\u043b\u043e\u0435\u00bb, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u043e\u0442\u00a0\u043d\u0435\u0433\u043e \u0432 233-\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0451, \u0430\u00a0\u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u044b. \u0422\u0438\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u043c\u0435\u0436\u0434\u0443 229\u00a0\u0438 233, Telethon \u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442 \u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u00a0\u043d\u0438\u0445 \u0441\u00a0TypeNotFoundError.\u041f\u043e\u043a\u0430 \u0431\u043e\u0442 \u0436\u0438\u043b \u0432\u00a0\u043b\u0438\u0447\u043a\u0435, \u044d\u0442\u043e \u043d\u0435\u00a0\u043c\u0435\u0448\u0430\u043b\u043e. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u044b\u043b\u0435\u0437\u043b\u0430, \u043a\u043e\u0433\u0434\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u00a0\u0438\u0433\u0440\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u043e\u0432 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430. \u0427\u0442\u043e\u0431\u044b \u0431\u043e\u0442 \u0432\u0438\u0434\u0435\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u043e\u0432, \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u0430. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Telethon \u0434\u0435\u043b\u0430\u0435\u0442 updates.getDifference, \u0432\u00a0\u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u0430\u043d\u0430\u043b\u0430, \u0438 \u0431\u043e\u0442 \u043f\u0430\u0434\u0430\u0435\u0442:telethon.errors.common.TypeNotFoundError: Could not find a matching Constructor ID for the TLObject that was supposed to be read with ID 7ad15240.Docker \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0431\u043e\u0442 \u0441\u043d\u043e\u0432\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u00a0\u0441\u0442\u0430\u0440\u0442\u0435. \u0421\u043d\u0430\u0440\u0443\u0436\u0438 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u0431\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c.\u0427\u0438\u043d\u0438\u0442\u0441\u044f \u044d\u0442\u043e \u0437\u0430\u00a0\u043f\u043e\u043b\u0447\u0430\u0441\u0430, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0442\u044c, \u0433\u0434\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. 7ad15240\u00a0\u0438\u0449\u0435\u043c \u0432 api.tl Telegram Desktop\u00a0\u2014 \u044d\u0442\u043e channel. \u041f\u043e\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0441\u00a0\u0442\u0435\u043c, \u043a\u0430\u043a\u00a0\u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u0447\u0438\u0442\u0430\u0435\u0442 Telethon (inspect.getsource(types.Channel.from_reader)). \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439: \u0432\u043e\u00a0\u0432\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u0435 \u0444\u043b\u0430\u0433\u043e\u0432 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0431\u0438\u0442\u044b 21\u00a0\u0438 23\u00a0\u0431\u0435\u0437\u00a0\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u0435 pinned_msg_id:flags2.22?int \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435. \u0417\u043d\u0430\u0447\u0438\u0442, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0434\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0440\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 Telethon \u0438 \u0434\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0445\u0432\u043e\u0441\u0442 \u0441\u0430\u043c\u043e\u043c\u0443:from telethon.tl import alltlobjects, typesclass Channel233(types.Channel):    &#171;&#187;&#187;channel#7ad15240 (233) = channel \u0438\u0437 Telethon (229) + pinned_msg_id:flags2.22?int \u0432 \u043a\u043e\u043d\u0446\u0435&#187;&#187;&#187;    CONSTRUCTOR_ID = 0x7AD15240    @classmethod    def from_reader(cls, reader):        pos = reader.tell_position()        reader.read_int()              # flags        flags2 = reader.read_int()        reader.set_position(pos)        obj = types.Channel.from_reader(reader)        if flags2 &amp; (1 &lt;&lt; 22):            reader.read_int()          # pinned_msg_id        return objalltlobjects.tlobjects[Channel233.CONSTRUCTOR_ID] = Channel233\u0422\u0435\u043c\u00a0\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043b messageReplyHeader: \u0432 233-\u043c \u0441\u043b\u043e\u0435 \u0432\u00a0\u043a\u043e\u043d\u0446\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u043e\u0441\u044c quote_rich:flags.14?Vector, \u0438 \u0431\u0435\u0437\u00a0\u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0431\u043e\u0442 \u0443\u043f\u0430\u043b\u00a0\u0431\u044b, \u043a\u0430\u043a\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0442\u043e\u2011\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u043d\u0430\u00a0\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.\u0427\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0436\u0434\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 233-\u0433\u043e \u0441\u043b\u043e\u044f Telethon \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442:import refrom telethon.tl import alltlobjectsknown = set(alltlobjects.tlobjects)for line in open(&#171;api.tl&#187;, encoding=&#187;utf-8&#8243;):    if line.startswith(&#171;&#8212;functions&#187;):        break    m = re.match(r&#187;^([\\w.]+)#([0-9a-f]+) .*= ([\\w.]+);&#187;, line)    if m and int(m.group(2), 16) not in known:        print(m.group(3), m.group(1))\u0423\u00a0\u043c\u0435\u043d\u044f \u0442\u0430\u043a\u0438\u0445 \u043d\u0430\u0431\u0440\u0430\u043b\u043e\u0441\u044c 95. \u0418\u0437\u00a0\u0442\u0435\u0445, \u0447\u0442\u043e\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u044e\u0442 \u0431\u043e\u0442\u0443,\u00a0\u2014 channel, channelFull, userFull, messageReplyHeader, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435\u00a0\u2014 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0438, \u0442\u0435\u043c\u044b \u0444\u043e\u0440\u0443\u043c\u043e\u0432 \u0438 \u0441\u0430\u043c\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u044b. \u041f\u043e\u043b\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0430 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u043e\u0442 \u0441\u0430\u043c \u043d\u0435\u00a0\u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0438\u0445 \u044f \u043f\u043e\u043a\u0430&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-502337","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/502337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=502337"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/502337\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=502337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=502337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=502337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}