{"id":6665,"date":"2026-07-19T17:00:43","date_gmt":"2026-07-19T13:30:43","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=6665"},"modified":"2026-07-19T17:00:43","modified_gmt":"2026-07-19T13:30:43","slug":"%d8%b3%d8%a7%d8%ae%d8%aa-slack-bot-%d8%a8%d8%a7-python-%d8%b1%d9%88%db%8c-ubuntu-24-04","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d8%b3%d8%a7%d8%ae%d8%aa-slack-bot-%d8%a8%d8%a7-python-%d8%b1%d9%88%db%8c-ubuntu-24-04\/","title":{"rendered":"\u0633\u0627\u062e\u062a Slack Bot \u0628\u0627 Python \u0631\u0648\u06cc Ubuntu 24.04"},"content":{"rendered":"<h2 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"43f4r3\" data-start=\"319\" data-end=\"327\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n<p data-start=\"329\" data-end=\"549\">Slack \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645\u200c\u0647\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0628\u0631\u0627\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627 \u0648 \u0633\u0627\u0632\u0645\u0627\u0646\u200c\u0647\u0627 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645\u060c \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u0648 \u062e\u0635\u0648\u0635\u06cc\u060c \u062a\u0645\u0627\u0633 \u0635\u0648\u062a\u06cc \u0648 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0631\u0628\u0627\u062a\u200c\u0647\u0627 (Bot) \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p data-start=\"551\" data-end=\"734\">\u0631\u0628\u0627\u062a\u200c\u0647\u0627\u06cc Slack \u06cc\u0627 <strong data-start=\"569\" data-end=\"581\">Slackbot<\/strong> \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0646\u062f\u061b \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0648 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0648 \u0627\u0637\u0644\u0627\u0639\u200c\u0631\u0633\u0627\u0646\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631.<\/p>\n<p data-start=\"736\" data-end=\"939\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0632\u0628\u0627\u0646 <strong data-start=\"787\" data-end=\"797\">Python<\/strong> \u06cc\u06a9 Slackbot \u0628\u0633\u0627\u0632\u06cc\u062f. \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0633\u0627\u062f\u06af\u06cc\u060c \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0631\u0628\u0627\u062a\u200c\u0647\u0627\u06cc Slack \u0645\u062d\u0633\u0648\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"941\" data-end=\"1030\">Slack \u0646\u06cc\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0631\u0633\u0645\u06cc \u0645\u062a\u0646\u0648\u0639\u06cc \u0628\u0631\u0627\u06cc Python \u0627\u0631\u0627\u0626\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u0646\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"1032\" data-end=\"1177\">\n<li data-section-id=\"1ih9obg\" data-start=\"1032\" data-end=\"1050\">\u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1tzppdb\" data-start=\"1051\" data-end=\"1082\">\u0627\u06cc\u0645\u0648\u062c\u06cc \u0628\u0647 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"5ye1lu\" data-start=\"1083\" data-end=\"1101\">\u0641\u0627\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1ss4fui\" data-start=\"1102\" data-end=\"1149\">\u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 Workspace \u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u062f.<\/li>\n<li data-section-id=\"1z0d781\" data-start=\"1150\" data-end=\"1177\">\u0648 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631.<\/li>\n<\/ul>\n<p data-start=\"1179\" data-end=\"1353\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0639\u0645\u0644\u06cc\u060c \u06cc\u06a9 \u0631\u0628\u0627\u062a \u0633\u0627\u062f\u0647 \u0628\u0647 \u0646\u0627\u0645 <strong data-start=\"1236\" data-end=\"1247\">CoinBot<\/strong> \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0628\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u062f\u0631 \u06a9\u0627\u0646\u0627\u0644 Slack\u060c \u0645\u0627\u0646\u0646\u062f \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0639\u0645\u0644 \u06a9\u0631\u062f\u0647 \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"1355\" data-end=\"1529\">\u0627\u06af\u0631\u0686\u0647 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062a\u0645\u0627\u0645 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u0627\u06cc\u0647 \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0631\u0628\u0627\u062a\u200c\u0647\u0627\u06cc \u062d\u0631\u0641\u0647\u200c\u0627\u06cc Slack \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u067e\u0633 \u0627\u0632 \u067e\u0627\u06cc\u0627\u0646 \u0622\u0645\u0648\u0632\u0634 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n<ul data-start=\"1531\" data-end=\"1668\">\n<li data-section-id=\"1b6rdmk\" data-start=\"1531\" data-end=\"1563\">\u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 (Notification)<\/li>\n<li data-section-id=\"zbdj69\" data-start=\"1564\" data-end=\"1580\">\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u062a\u06cc\u0645\u06cc<\/li>\n<li data-section-id=\"1yczhtb\" data-start=\"1581\" data-end=\"1602\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627<\/li>\n<li data-section-id=\"1n4cihy\" data-start=\"1603\" data-end=\"1626\">\u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc<\/li>\n<li data-section-id=\"1eh5ubh\" data-start=\"1627\" data-end=\"1644\">\u067e\u0627\u0633\u062e\u06af\u0648\u06cc\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631<\/li>\n<li data-section-id=\"swxnak\" data-start=\"1645\" data-end=\"1668\">\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 API\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641<\/li>\n<\/ul>\n<p data-start=\"1670\" data-end=\"1681\">\u06af\u0633\u062a\u0631\u0634 \u062f\u0647\u06cc\u062f.<\/p>\n<blockquote data-start=\"1683\" data-end=\"1769\">\n<p data-start=\"1685\" data-end=\"1693\"><strong data-start=\"1685\" data-end=\"1693\">\u0646\u06a9\u062a\u0647<\/strong><\/p>\n<p data-start=\"1698\" data-end=\"1769\">\u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0631 \u0627\u0633\u0627\u0633 <strong data-start=\"1716\" data-end=\"1728\">Python 3<\/strong> \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u0627 Python 2 \u0633\u0627\u0632\u06af\u0627\u0631 \u0646\u06cc\u0633\u062a.<\/p>\n<\/blockquote>\n<hr data-start=\"1771\" data-end=\"1774\" \/>\n<h1 data-section-id=\"15g5ic3\" data-start=\"1776\" data-end=\"1788\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h1>\n<p data-start=\"1790\" data-end=\"1841\">\u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u0631\u0627\u062d\u0644 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<h2 data-section-id=\"nj5w2a\" data-start=\"1843\" data-end=\"1870\">\u06f1. \u06cc\u06a9 Workspace \u062f\u0631 Slack<\/h2>\n<p data-start=\"1872\" data-end=\"1965\">\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 Workspace \u062f\u0631 Slack \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u0646\u0635\u0628 \u0628\u0631\u0646\u0627\u0645\u0647 (App) \u0631\u0648\u06cc \u0622\u0646 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p data-start=\"1967\" data-end=\"2060\">\u0627\u06af\u0631 Workspace \u0631\u0627 \u062e\u0648\u062f\u062a\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0627\u06cc\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.<\/p>\n<hr data-start=\"2062\" data-end=\"2065\" \/>\n<h2 data-section-id=\"jxqxza\" data-start=\"2067\" data-end=\"2093\">\u06f2. \u06cc\u06a9 \u0633\u0631\u0648\u0631 Ubuntu 24.04<\/h2>\n<p data-start=\"2095\" data-end=\"2174\">\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0632 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u062a\u0627\u0632\u0647 \u0628\u0627 \u0645\u0634\u062e\u0635\u0627\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"2176\" data-end=\"2265\">\n<li data-section-id=\"1d4n6le\" data-start=\"2176\" data-end=\"2194\">Ubuntu 24.04 LTS<\/li>\n<li data-section-id=\"6jg7gw\" data-start=\"2195\" data-end=\"2229\">\u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 Root \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo<\/li>\n<li data-section-id=\"1fdwk2a\" data-start=\"2230\" data-end=\"2245\">\u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 SSH<\/li>\n<li data-section-id=\"1f5jz39\" data-start=\"2246\" data-end=\"2265\">\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a<\/li>\n<\/ul>\n<p data-start=\"2267\" data-end=\"2415\">\u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u0633\u0631\u0648\u0631 \u062a\u0647\u06cc\u0647 \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0646\u0647\u0627 \u062f\u0631 \u0686\u0646\u062f \u062f\u0642\u06cc\u0642\u0647 \u06cc\u06a9 <strong data-start=\"2328\" data-end=\"2368\">\u0633\u0631\u0648\u0631 \u0627\u0628\u0631\u06cc \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f (Parmin Cloud)<\/strong> \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0645\u0631\u0627\u062d\u0644 \u0622\u0645\u0648\u0632\u0634 \u0631\u0627 \u0631\u0648\u06cc \u0622\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/p>\n<hr data-start=\"2417\" data-end=\"2420\" \/>\n<h2 data-section-id=\"cbfbpq\" data-start=\"2422\" data-end=\"2453\">\u06f3. \u062f\u0627\u0634\u062a\u0646 IP \u0639\u0645\u0648\u0645\u06cc (\u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc)<\/h2>\n<p data-start=\"2455\" data-end=\"2574\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 Slack \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 (Events) \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0628\u0627\u062a \u0634\u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0633\u0631\u0648\u0631 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 <strong data-start=\"2555\" data-end=\"2568\">Public IP<\/strong> \u0628\u0627\u0634\u062f.<\/p>\n<p data-start=\"2576\" data-end=\"2639\">\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0622\u0645\u0648\u0632\u0634 \u0631\u0627 \u0631\u0648\u06cc \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631 \u0634\u062e\u0635\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f\u060c \u0644\u0627\u0632\u0645 \u0627\u0633\u062a:<\/p>\n<ul data-start=\"2641\" data-end=\"2735\">\n<li data-section-id=\"7euehs\" data-start=\"2641\" data-end=\"2670\">Port Forwarding \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/li>\n<li data-section-id=\"fddhw3\" data-start=\"2671\" data-end=\"2735\">\u06cc\u0627 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Cloudflare Tunnel \u06cc\u0627 Ngrok \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p data-start=\"2737\" data-end=\"2812\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0641\u0631\u0636 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 Ubuntu \u0628\u0627 IP \u0639\u0645\u0648\u0645\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<hr data-start=\"2814\" data-end=\"2817\" \/>\n<p data-start=\"2819\" data-end=\"2906\" data-is-last-node=\"\" data-is-only-node=\"\">\u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc \u0648\u0627\u0631\u062f \u067e\u0646\u0644 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 Slack \u0645\u06cc\u200c\u0634\u0648\u06cc\u0645 \u0648 \u0627\u0648\u0644\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<hr data-start=\"2814\" data-end=\"2817\" \/>\n<div class=\"qMYqUG_convSearchResultHighlightRoot\">\n<div class=\"\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-7\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-7\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-7\" data-testid=\"conversation-turn-634\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-15 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" data-conversation-screenshot-content=\"\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"ce41a2c7-8776-4a22-8e06-2351bb4eaecd\" data-message-model-slug=\"gpt-5-5\" data-turn-start-message=\"true\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full dark markdown-new-styling\">\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1f3d299\" data-start=\"19\" data-end=\"73\">\u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644 \u2014 \u0633\u0627\u062e\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 Slack \u062f\u0631 \u067e\u0646\u0644 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646<\/h1>\n<p data-start=\"75\" data-end=\"143\">\u062f\u0631 \u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645 \u0628\u0627\u06cc\u062f \u0631\u0628\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u067e\u0646\u0644 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 Slack \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"145\" data-end=\"158\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631:<\/p>\n<ol data-start=\"160\" data-end=\"295\">\n<li data-section-id=\"xidqwu\" data-start=\"160\" data-end=\"196\">\u0648\u0627\u0631\u062f Workspace \u062e\u0648\u062f \u062f\u0631 Slack \u0634\u0648\u06cc\u062f.<\/li>\n<li data-section-id=\"rolt2b\" data-start=\"197\" data-end=\"253\">\u0633\u067e\u0633 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0645\u0631\u0648\u0631\u06af\u0631 \u0648\u0627\u0631\u062f <strong data-start=\"224\" data-end=\"247\">Slack API Dashboard<\/strong> \u0634\u0648\u06cc\u062f.<\/li>\n<li data-section-id=\"1i3ogn1\" data-start=\"254\" data-end=\"295\">\u0631\u0648\u06cc \u06af\u0632\u06cc\u0646\u0647 <strong data-start=\"267\" data-end=\"284\">Create an App<\/strong> \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ol>\n<hr data-start=\"297\" data-end=\"300\" \/>\n<h2 data-section-id=\"mc1zht\" data-start=\"302\" data-end=\"322\">\u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647<\/h2>\n<p data-start=\"324\" data-end=\"366\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0627\u0632 \u0634\u0645\u0627 \u062f\u0648 \u0645\u0648\u0631\u062f \u062e\u0648\u0627\u0633\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-start=\"368\" data-end=\"408\">\n<li data-section-id=\"mpopf5\" data-start=\"368\" data-end=\"391\">\u0646\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 (App Name)<\/li>\n<li data-section-id=\"1l85yz4\" data-start=\"392\" data-end=\"408\">Workspace \u0645\u0642\u0635\u062f<\/li>\n<\/ul>\n<p data-start=\"410\" data-end=\"500\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0646\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 <strong data-start=\"437\" data-end=\"448\">CoinBot<\/strong> \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u0648 Workspace \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"502\" data-end=\"551\">\u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648\u06cc <strong data-start=\"526\" data-end=\"540\">Create App<\/strong> \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"553\" data-end=\"556\" \/>\n<h2 data-section-id=\"1feawvg\" data-start=\"558\" data-end=\"582\">\u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647<\/h2>\n<p data-start=\"584\" data-end=\"636\">\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0648\u0627\u0631\u062f \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u0646 \u0645\u06cc\u200c\u0634\u0648\u06cc\u062f.<\/p>\n<p data-start=\"638\" data-end=\"659\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"661\" data-end=\"861\">\n<li data-section-id=\"g1fiuz\" data-start=\"661\" data-end=\"709\">\u0633\u0637\u062d \u062f\u0633\u062a\u0631\u0633\u06cc (Permissions) \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"5ajeyn\" data-start=\"710\" data-end=\"754\">\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc (Events) \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1jh65zh\" data-start=\"755\" data-end=\"790\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0631\u0648\u06cc Workspace \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1opdszl\" data-start=\"791\" data-end=\"821\">\u062a\u0648\u06a9\u0646\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1emsj6x\" data-start=\"822\" data-end=\"861\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p data-start=\"863\" data-end=\"926\">\u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0628\u0627\u062a \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0627\u0646\u062c\u0627\u0645 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"928\" data-end=\"931\" \/>\n<h2 data-section-id=\"9hhhyh\" data-start=\"933\" data-end=\"959\">\u0627\u0639\u0637\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645<\/h2>\n<p data-start=\"961\" data-end=\"1068\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0631\u0628\u0627\u062a \u0628\u062a\u0648\u0627\u0646\u062f \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627 \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0645\u062c\u0648\u0632 \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"1070\" data-end=\"1094\">\u0627\u0632 \u0645\u0646\u0648\u06cc \u0633\u0645\u062a \u0686\u067e \u0648\u0627\u0631\u062f \u0628\u062e\u0634:<\/p>\n<p data-start=\"1096\" data-end=\"1119\"><strong data-start=\"1096\" data-end=\"1119\">OAuth &amp; Permissions<\/strong><\/p>\n<p data-start=\"1121\" data-end=\"1126\">\u0634\u0648\u06cc\u062f.<\/p>\n<p data-start=\"1128\" data-end=\"1178\">\u0633\u067e\u0633 \u06a9\u0645\u06cc \u067e\u0627\u06cc\u06cc\u0646\u200c\u062a\u0631 \u0628\u0631\u0648\u06cc\u062f \u062a\u0627 \u0628\u0647 \u0628\u062e\u0634 <strong data-start=\"1161\" data-end=\"1171\">Scopes<\/strong> \u0628\u0631\u0633\u06cc\u062f.<\/p>\n<p data-start=\"1180\" data-end=\"1219\">\u062f\u0631 \u0642\u0633\u0645\u062a <strong data-start=\"1188\" data-end=\"1208\">Bot Token Scopes<\/strong> \u0631\u0648\u06cc \u06af\u0632\u06cc\u0646\u0647:<\/p>\n<p data-start=\"1221\" data-end=\"1243\"><strong data-start=\"1221\" data-end=\"1243\">Add an OAuth Scope<\/strong><\/p>\n<p data-start=\"1245\" data-end=\"1255\">\u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"1257\" data-end=\"1260\" \/>\n<h2 data-section-id=\"1psst7y\" data-start=\"1262\" data-end=\"1291\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0645\u062c\u0648\u0632 chat:write<\/h2>\n<p data-start=\"1293\" data-end=\"1330\">\u062f\u0631 \u06a9\u0627\u062f\u0631 \u062c\u0633\u062a\u062c\u0648 \u0639\u0628\u0627\u0631\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>chat:write<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1356\" data-end=\"1436\">\u0627\u06cc\u0646 \u0633\u0637\u062d \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0631\u0628\u0627\u062a \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062f\u0631 \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0639\u0636\u0648 \u0622\u0646\u200c\u0647\u0627\u0633\u062a \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"1438\" data-end=\"1519\">\u062f\u0631 \u0622\u06cc\u0646\u062f\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0646\u06cc\u0632 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"1521\" data-end=\"1608\">\n<li data-section-id=\"1xvava2\" data-start=\"1521\" data-end=\"1537\">\u062e\u0648\u0627\u0646\u062f\u0646 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627<\/li>\n<li data-section-id=\"be8x23\" data-start=\"1538\" data-end=\"1554\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0627\u06cc\u0644\u200c\u0647\u0627<\/li>\n<li data-section-id=\"1ldw9j2\" data-start=\"1555\" data-end=\"1572\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627<\/li>\n<li data-section-id=\"9kxmaf\" data-start=\"1573\" data-end=\"1589\">\u0648\u0627\u06a9\u0646\u0634 \u0628\u0627 Emoji<\/li>\n<li data-section-id=\"u7gd9w\" data-start=\"1590\" data-end=\"1608\">\u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u062e\u0635\u0648\u0635\u06cc<\/li>\n<\/ul>\n<p data-start=\"1610\" data-end=\"1658\">\u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0647\u0645\u0627\u0646 <strong data-start=\"1634\" data-end=\"1648\">chat:write<\/strong> \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a.<\/p>\n<hr data-start=\"1660\" data-end=\"1663\" \/>\n<h2 data-section-id=\"wlioes\" data-start=\"1665\" data-end=\"1692\">\u0646\u0635\u0628 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc Workspace<\/h2>\n<p data-start=\"1694\" data-end=\"1767\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0645\u062c\u0648\u0632\u0647\u0627 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0631\u0648\u06cc Workspace \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"1769\" data-end=\"1839\">\u062f\u0631 \u0647\u0645\u0627\u0646 \u0635\u0641\u062d\u0647 <strong data-start=\"1782\" data-end=\"1805\">OAuth &amp; Permissions<\/strong> \u0628\u0647 \u0628\u0627\u0644\u0627\u06cc \u0635\u0641\u062d\u0647 \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647:<\/p>\n<p data-start=\"1841\" data-end=\"1869\"><strong data-start=\"1841\" data-end=\"1869\">Install App to Workspace<\/strong><\/p>\n<p data-start=\"1871\" data-end=\"1881\">\u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1883\" data-end=\"1944\">Slack \u0641\u0647\u0631\u0633\u062a\u06cc \u0627\u0632 \u0645\u062c\u0648\u0632\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u062f\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p data-start=\"1946\" data-end=\"1991\">\u0627\u06af\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0635\u062d\u06cc\u062d \u0628\u0648\u062f \u0631\u0648\u06cc <strong data-start=\"1971\" data-end=\"1980\">Allow<\/strong> \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"1993\" data-end=\"1996\" \/>\n<h2 data-section-id=\"dqyau1\" data-start=\"1998\" data-end=\"2017\">\u062f\u0631\u06cc\u0627\u0641\u062a Bot Token<\/h2>\n<p data-start=\"2019\" data-end=\"2087\">\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628 \u0645\u0648\u0641\u0642 \u0628\u0631\u0646\u0627\u0645\u0647\u060c Slack \u06cc\u06a9 \u062a\u0648\u06a9\u0646 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0628\u0631\u0627\u06cc \u0631\u0628\u0627\u062a \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"2089\" data-end=\"2127\">\u0627\u06cc\u0646 \u062a\u0648\u06a9\u0646 \u0628\u0627 \u0646\u0627\u0645 \u0632\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Bot User OAuth Token<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2163\" data-end=\"2189\">\u06cc\u0627 \u062f\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f Slack:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>xoxb-xxxxxxxxxxxxxxxx<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2226\" data-end=\"2340\">\u0627\u06cc\u0646 \u062a\u0648\u06a9\u0646 \u0631\u0627 \u062f\u0631 \u062c\u0627\u06cc \u0627\u0645\u0646\u06cc \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f\u061b \u0632\u06cc\u0631\u0627 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0622\u0645\u0648\u0632\u0634 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 Python \u0628\u0647 Slack \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<blockquote data-start=\"2342\" data-end=\"2449\">\n<p data-start=\"2344\" data-end=\"2359\"><strong data-start=\"2344\" data-end=\"2359\">\u0646\u06a9\u062a\u0647 \u0627\u0645\u0646\u06cc\u062a\u06cc<\/strong><\/p>\n<p data-start=\"2364\" data-end=\"2449\">\u0627\u06cc\u0646 \u062a\u0648\u06a9\u0646 \u0645\u0639\u0627\u062f\u0644 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0628\u0627\u062a \u0634\u0645\u0627\u0633\u062a. \u0647\u0631\u06af\u0632 \u0622\u0646 \u0631\u0627 \u062f\u0627\u062e\u0644 GitHub \u06cc\u0627 \u0645\u062e\u0627\u0632\u0646 \u0639\u0645\u0648\u0645\u06cc \u0642\u0631\u0627\u0631 \u0646\u062f\u0647\u06cc\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"2451\" data-end=\"2454\" \/>\n<h2 data-section-id=\"n1yugh\" data-start=\"2456\" data-end=\"2486\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0631\u0628\u0627\u062a \u0628\u0647 \u06cc\u06a9 \u06a9\u0627\u0646\u0627\u0644<\/h2>\n<p data-start=\"2488\" data-end=\"2545\">\u062f\u0631 \u0622\u062e\u0631 \u0628\u0627\u06cc\u062f \u0631\u0628\u0627\u062a \u0631\u0627 \u0648\u0627\u0631\u062f \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627\u06cc Workspace \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"2547\" data-end=\"2633\">\u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u06a9\u0627\u0646\u0627\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06a9\u0627\u0646\u0627\u0644 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 <strong data-start=\"2607\" data-end=\"2619\">#general<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"2635\" data-end=\"2648\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631:<\/p>\n<ol data-start=\"2650\" data-end=\"2809\">\n<li data-section-id=\"1yh682x\" data-start=\"2650\" data-end=\"2697\">\u0628\u0631\u0646\u0627\u0645\u0647 CoinBot \u0631\u0627 \u0627\u0632 \u0628\u062e\u0634 <strong data-start=\"2678\" data-end=\"2686\">Apps<\/strong> \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"4rh29p\" data-start=\"2698\" data-end=\"2723\">\u0648\u0627\u0631\u062f \u0635\u0641\u062d\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0648\u06cc\u062f.<\/li>\n<li data-section-id=\"how2ru\" data-start=\"2724\" data-end=\"2772\">\u0631\u0648\u06cc \u0622\u06cc\u06a9\u0648\u0646 <strong data-start=\"2737\" data-end=\"2748\">Details<\/strong> \u062f\u0631 \u06af\u0648\u0634\u0647 \u0628\u0627\u0644\u0627 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"kvrprn\" data-start=\"2773\" data-end=\"2809\">\u0627\u0632 \u0645\u0646\u0648\u06cc \u0633\u0647 \u0646\u0642\u0637\u0647 (<strong data-start=\"2793\" data-end=\"2801\">More<\/strong>) \u06af\u0632\u06cc\u0646\u0647:<\/li>\n<\/ol>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Add this app to a channel<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2850\" data-end=\"2865\">\u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"2867\" data-end=\"2926\">\u0633\u067e\u0633 \u0646\u0627\u0645 \u06a9\u0627\u0646\u0627\u0644 \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0631\u0648\u06cc <strong data-start=\"2908\" data-end=\"2915\">Add<\/strong> \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"2928\" data-end=\"2931\" \/>\n<p data-start=\"2933\" data-end=\"3021\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0631\u0628\u0627\u062a \u0634\u0645\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0648 \u0628\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627\u06cc Workspace \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p data-start=\"3023\" data-end=\"3091\">\u0627\u0644\u0628\u062a\u0647 \u0647\u0646\u0648\u0632 \u0647\u06cc\u0686 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0632\u06cc\u0631\u0627 \u0647\u0646\u0648\u0632 \u06a9\u062f\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u0646\u0646\u0648\u0634\u062a\u0647\u200c\u0627\u06cc\u0645.<\/p>\n<p data-start=\"3093\" data-end=\"3179\" data-is-last-node=\"\" data-is-only-node=\"\">\u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 Python \u0631\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<hr data-start=\"2814\" data-end=\"2817\" \/>\n<div class=\"qMYqUG_convSearchResultHighlightRoot\">\n<div class=\"\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-8\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-8\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-8\" data-testid=\"conversation-turn-636\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-15 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" data-conversation-screenshot-content=\"\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"eddbf163-63c1-401c-b2c4-ae4d320d7169\" data-message-model-slug=\"gpt-5-5\" data-turn-start-message=\"true\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full dark markdown-new-styling\">\n<h2 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"12kqqwf\" data-start=\"0\" data-end=\"43\">\u0645\u0631\u062d\u0644\u0647 \u062f\u0648\u0645 \u2014 \u0622\u0645\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 Python<\/h2>\n<p data-start=\"45\" data-end=\"162\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 Slack \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0646\u0648\u0628\u062a \u0628\u0647 \u0622\u0645\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u06cc\u200c\u0631\u0633\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u0631\u0628\u0627\u062a \u0631\u0627 \u0622\u063a\u0627\u0632 \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"164\" data-end=\"293\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 <strong data-start=\"180\" data-end=\"192\">Python 3<\/strong> \u0648 \u06cc\u06a9 <strong data-start=\"198\" data-end=\"221\">Virtual Environment<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u0632 \u0633\u0627\u06cc\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062c\u062f\u0627 \u0628\u0627\u0634\u0646\u062f.<\/p>\n<hr data-start=\"295\" data-end=\"298\" \/>\n<h2 data-section-id=\"1qfxaxt\" data-start=\"300\" data-end=\"320\">\u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u06cc\u0633\u062a\u0645<\/h2>\n<p data-start=\"322\" data-end=\"376\">\u0627\u0628\u062a\u062f\u0627 \u0644\u06cc\u0633\u062a \u0645\u062e\u0627\u0632\u0646 \u0648 \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> apt update\r\n<span class=\"\u037c10\">sudo<\/span> apt upgrade <span class=\"\u037c12\">-y<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"427\" data-end=\"430\" \/>\n<h2 data-section-id=\"hqhu2x\" data-start=\"432\" data-end=\"465\">\u0646\u0635\u0628 Python \u0648 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632<\/h2>\n<p data-start=\"467\" data-end=\"577\">\u062f\u0631 Ubuntu 24.04 \u0645\u0639\u0645\u0648\u0644\u0627\u064b Python 3 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646\u060c \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> apt install python3 python3-venv python3-pip <span class=\"\u037c12\">-y<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"645\" data-end=\"705\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0646\u0633\u062e\u0647 Python \u0646\u06cc\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>python3 <span class=\"\u037c12\">--version<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"738\" data-end=\"750\">\u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Python 3.12.x<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"779\" data-end=\"782\" \/>\n<h2 data-section-id=\"1cia2ou\" data-start=\"784\" data-end=\"812\">\u0627\u06cc\u062c\u0627\u062f Virtual Environment<\/h2>\n<p data-start=\"814\" data-end=\"924\">\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062a\u062f\u0627\u062e\u0644 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0628\u0627 \u0633\u0627\u06cc\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0627\u0632 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc Python \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"926\" data-end=\"979\">\u0627\u0628\u062a\u062f\u0627 \u067e\u0648\u0634\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">mkdir<\/span> <span class=\"\u037c12\">-p<\/span> ~\/.venvs<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1012\" data-end=\"1047\">\u0633\u067e\u0633 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>python3 <span class=\"\u037c12\">-m<\/span> venv ~\/.venvs\/slackbot<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1096\" data-end=\"1099\" \/>\n<h2 data-section-id=\"12hg170\" data-start=\"1101\" data-end=\"1124\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc<\/h2>\n<p data-start=\"1126\" data-end=\"1156\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">source<\/span> ~\/.venvs\/slackbot\/bin\/activate<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1209\" data-end=\"1274\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a\u060c \u0627\u0628\u062a\u062f\u0627\u06cc \u062e\u0637 \u0641\u0631\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>(slackbot) user@server:~$<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1315\" data-end=\"1396\">\u0627\u0632 \u0627\u06cc\u0646 \u0644\u062d\u0638\u0647 \u062a\u0645\u0627\u0645 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0641\u0642\u0637 \u062f\u0631 \u0647\u0645\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0642\u0631\u0627\u0631 \u062e\u0648\u0627\u0647\u0646\u062f \u06af\u0631\u0641\u062a.<\/p>\n<hr data-start=\"1398\" data-end=\"1401\" \/>\n<h2 data-section-id=\"1mskzg\" data-start=\"1403\" data-end=\"1439\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u06cc\u0631\u0648\u0631 PyPI \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/h2>\n<p data-start=\"1441\" data-end=\"1536\">\u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u062f\u0627\u0646\u0644\u0648\u062f \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc Python\u060c \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0632 \u0645\u06cc\u0631\u0648\u0631 PyPI \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1538\" data-end=\"1576\">\u0627\u0628\u062a\u062f\u0627 pip \u0631\u0627 \u0628\u0647 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>python <span class=\"\u037c12\">-m<\/span> pip install <span class=\"\u037c12\">--upgrade<\/span> pip \\\r\n<span class=\"\u037c12\">-i<\/span> https:\/\/pypi.parmincloud.ir\/simple\/<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1668\" data-end=\"1712\">\u0633\u067e\u0633 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>pip install slackclient slackeventsapi Flask \\\r\n<span class=\"\u037c12\">-i<\/span> https:\/\/pypi.parmincloud.ir\/simple\/<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1813\" data-end=\"1862\">\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u0632 \u0633\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0635\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"1864\" data-end=\"2092\">\n<thead data-start=\"1864\" data-end=\"1885\">\n<tr data-start=\"1864\" data-end=\"1885\">\n<th class=\"last:pe-10\" data-start=\"1864\" data-end=\"1875\" data-col-size=\"sm\">\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647<\/th>\n<th class=\"last:pe-10\" data-start=\"1875\" data-end=\"1885\" data-col-size=\"md\">\u06a9\u0627\u0631\u0628\u0631\u062f<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"1908\" data-end=\"2092\">\n<tr data-start=\"1908\" data-end=\"1965\">\n<td data-start=\"1908\" data-end=\"1926\" data-col-size=\"sm\"><strong data-start=\"1910\" data-end=\"1925\">slackclient<\/strong><\/td>\n<td data-col-size=\"md\" data-start=\"1926\" data-end=\"1965\">\u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 Web API \u0627\u0633\u0644\u06a9 \u0648 \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645<\/td>\n<\/tr>\n<tr data-start=\"1966\" data-end=\"2022\">\n<td data-start=\"1966\" data-end=\"1987\" data-col-size=\"sm\"><strong data-start=\"1968\" data-end=\"1986\">slackeventsapi<\/strong><\/td>\n<td data-start=\"1987\" data-end=\"2022\" data-col-size=\"md\">\u062f\u0631\u06cc\u0627\u0641\u062a Event\u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644\u06cc \u0627\u0632 Slack<\/td>\n<\/tr>\n<tr data-start=\"2023\" data-end=\"2092\">\n<td data-start=\"2023\" data-end=\"2035\" data-col-size=\"sm\"><strong data-start=\"2025\" data-end=\"2034\">Flask<\/strong><\/td>\n<td data-start=\"2035\" data-end=\"2092\" data-col-size=\"md\">\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 Web Server \u0633\u0628\u06a9 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc Slack<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<hr data-start=\"2094\" data-end=\"2097\" \/>\n<h2 data-section-id=\"164cj8h\" data-start=\"2099\" data-end=\"2123\">\u0628\u0631\u0631\u0633\u06cc \u0646\u0635\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627<\/h2>\n<p data-start=\"2125\" data-end=\"2174\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0646\u0635\u0628 \u0635\u062d\u06cc\u062d\u060c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>pip list<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2198\" data-end=\"2249\">\u062e\u0631\u0648\u062c\u06cc \u0628\u0627\u06cc\u062f \u0634\u0627\u0645\u0644 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Flask\r\nslackclient\r\nslackeventsapi<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2297\" data-end=\"2300\" \/>\n<h2 data-section-id=\"1azxtzc\" data-start=\"2302\" data-end=\"2320\">\u0633\u0627\u062e\u062a \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647<\/h2>\n<p data-start=\"2322\" data-end=\"2376\">\u0628\u0631\u0627\u06cc \u0646\u0638\u0645 \u0628\u06cc\u0634\u062a\u0631\u060c \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">mkdir<\/span> ~\/coinbot\r\n<span class=\"\u037c10\">cd<\/span> ~\/coinbot<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2420\" data-end=\"2472\">\u062a\u0645\u0627\u0645 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p data-start=\"2474\" data-end=\"2565\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0634\u0645\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u0631\u0628\u0627\u062a \u0631\u0627 \u0622\u063a\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"2567\" data-end=\"2570\" \/>\n<h2 data-section-id=\"1sh6tkp\" data-start=\"2572\" data-end=\"2610\">\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645\u061f<\/h2>\n<p data-start=\"2612\" data-end=\"2679\">\u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc \u06a9\u0644\u0627\u0633 <strong data-start=\"2629\" data-end=\"2640\">CoinBot<\/strong> \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061b \u06a9\u0644\u0627\u0633\u06cc \u06a9\u0647 \u0648\u0638\u06cc\u0641\u0647 \u062f\u0627\u0631\u062f:<\/p>\n<ul data-start=\"2681\" data-end=\"2834\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-section-id=\"xhee0m\" data-start=\"2681\" data-end=\"2710\">\u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0631\u0627 \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"124zsai\" data-start=\"2711\" data-end=\"2737\">\u067e\u06cc\u0627\u0645 \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"xxwgd0\" data-start=\"2738\" data-end=\"2834\" data-is-last-node=\"\">\u062e\u0631\u0648\u062c\u06cc \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f Slack (JSON Payload) \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u062f \u062a\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 API \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u062f.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<hr data-start=\"2814\" data-end=\"2817\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1p7yolj\" data-start=\"0\" data-end=\"41\">\u0645\u0631\u062d\u0644\u0647 \u0633\u0648\u0645 \u2014 \u0633\u0627\u062e\u062a \u06a9\u0644\u0627\u0633 CoinBot \u062f\u0631 Python<\/h1>\n<p data-start=\"43\" data-end=\"120\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0646\u0648\u0628\u062a \u0628\u0647 \u0646\u0648\u0634\u062a\u0646 \u0627\u0648\u0644\u06cc\u0646 \u0628\u062e\u0634 \u0627\u0632 \u06a9\u062f \u0631\u0628\u0627\u062a \u0645\u06cc\u200c\u0631\u0633\u062f.<\/p>\n<p data-start=\"122\" data-end=\"239\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u06a9\u0644\u0627\u0633\u06cc \u0628\u0647 \u0646\u0627\u0645 <strong data-start=\"148\" data-end=\"159\">CoinBot<\/strong> \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0648\u0638\u06cc\u0641\u0647 \u0622\u0646 \u0633\u0627\u062e\u062a \u067e\u06cc\u0627\u0645 \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc Slack \u0648 \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0627\u0633\u062a.<\/p>\n<p data-start=\"241\" data-end=\"346\">\u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u06cc\u06a9 <strong data-start=\"261\" data-end=\"277\">JSON Payload<\/strong> \u0645\u0637\u0627\u0628\u0642 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f Slack \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u062a\u0648\u0633\u0637 API \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u062f.<\/p>\n<hr data-start=\"348\" data-end=\"351\" \/>\n<h2 data-section-id=\"17sbtab\" data-start=\"353\" data-end=\"371\">\u0633\u0627\u062e\u062a \u0641\u0627\u06cc\u0644 \u067e\u0631\u0648\u0698\u0647<\/h2>\n<p data-start=\"373\" data-end=\"412\">\u0627\u0628\u062a\u062f\u0627 \u0641\u0627\u06cc\u0644 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0631\u0628\u0627\u062a \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">touch<\/span> coinbot.py<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"444\" data-end=\"482\">\u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u062f\u0644\u062e\u0648\u0627\u0647 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"484\" data-end=\"502\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u0628\u0627 Nano:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>nano coinbot.py<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"533\" data-end=\"536\" \/>\n<h2 data-section-id=\"9ietx7\" data-start=\"538\" data-end=\"561\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u06cc\u0627\u0645 \u062f\u0631 Slack<\/h2>\n<p data-start=\"563\" data-end=\"625\">\u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 Slack API \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u062f\u0631 \u0642\u0627\u0644\u0628 JSON \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p data-start=\"627\" data-end=\"651\">\u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u06cc\u0627\u0645:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>{\r\n    \"channel\": <span class=\"\u037cz\">\"general\"<\/span>,\r\n    \"blocks\": [\r\n        {\r\n            \"type\": <span class=\"\u037cz\">\"section\"<\/span>,\r\n            \"text\": {\r\n                \"type\": <span class=\"\u037cz\">\"mrkdwn\"<\/span>,\r\n                \"text\": <span class=\"\u037cz\">\"\u062f\u0631 \u062d\u0627\u0644 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647...\"<\/span>\r\n            }\r\n        },\r\n        {\r\n            \"type\": <span class=\"\u037cz\">\"section\"<\/span>,\r\n            \"text\": {\r\n                \"type\": <span class=\"\u037cz\">\"mrkdwn\"<\/span>,\r\n                \"text\": <span class=\"\u037cz\">\"\u0646\u062a\u06cc\u062c\u0647: \u0634\u06cc\u0631\"<\/span>\r\n            }\r\n        }\r\n    ]\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1044\" data-end=\"1152\">\u0627\u0644\u0628\u062a\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0627\u06cc\u0646 JSON \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u06cc\u0645\u061b \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0646\u062c\u0627\u0645 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.<\/p>\n<hr data-start=\"1154\" data-end=\"1157\" \/>\n<h1 data-section-id=\"ot8qge\" data-start=\"1159\" data-end=\"1192\">\u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632<\/h1>\n<p data-start=\"1194\" data-end=\"1249\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0641\u0642\u0637 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u062f\u0627\u062e\u0644\u06cc <strong data-start=\"1227\" data-end=\"1237\">random<\/strong> \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p data-start=\"1251\" data-end=\"1325\">\u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0627\u0639\u062f\u0627\u062f \u062a\u0635\u0627\u062f\u0641\u06cc \u0648 \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"1327\" data-end=\"1361\">\u0627\u0628\u062a\u062f\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">random<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1392\" data-end=\"1395\" \/>\n<h1 data-section-id=\"1i0676\" data-start=\"1397\" data-end=\"1417\">\u0627\u06cc\u062c\u0627\u062f \u06a9\u0644\u0627\u0633 CoinBot<\/h1>\n<p data-start=\"1419\" data-end=\"1458\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0644\u0627\u0633 \u0627\u0635\u0644\u06cc \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">class<\/span> <span class=\"\u037c10\">CoinBot<\/span>:\r\n    <span class=\"\u037cv\">pass<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1499\" data-end=\"1561\">\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062a\u0645\u0627\u0645 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0631\u0628\u0627\u062a \u062f\u0627\u062e\u0644 \u0647\u0645\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0642\u0631\u0627\u0631 \u062e\u0648\u0627\u0647\u0646\u062f \u06af\u0631\u0641\u062a.<\/p>\n<hr data-start=\"1563\" data-end=\"1566\" \/>\n<h1 data-section-id=\"oz6a28\" data-start=\"1568\" data-end=\"1591\">\u062a\u0639\u0631\u06cc\u0641 \u0642\u0627\u0644\u0628 \u0627\u0648\u0644\u06cc\u0647 \u067e\u06cc\u0627\u0645<\/h1>\n<p data-start=\"1593\" data-end=\"1678\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0631\u0628\u0627\u062a \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"1680\" data-end=\"1736\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06cc\u06a9 \u062b\u0627\u0628\u062a (Constant) \u062f\u0627\u062e\u0644 \u06a9\u0644\u0627\u0633 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">class<\/span> <span class=\"\u037c10\">CoinBot<\/span>:\r\n\r\n    <span class=\"\u037c11\">COIN_BLOCK<\/span> <span class=\"\u037cv\">=<\/span> {\r\n        <span class=\"\u037cz\">\"type\"<\/span>: <span class=\"\u037cz\">\"section\"<\/span>,\r\n        <span class=\"\u037cz\">\"text\"<\/span>: {\r\n            <span class=\"\u037cz\">\"type\"<\/span>: <span class=\"\u037cz\">\"mrkdwn\"<\/span>,\r\n            <span class=\"\u037cz\">\"text\"<\/span>: (\r\n                <span class=\"\u037cz\">\"\u062f\u0631 \u062d\u0627\u0644 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647...<\/span><span class=\"\u037c15\">\\n\\n<\/span><span class=\"\u037cz\">\"<\/span>\r\n            ),\r\n        },\r\n    }<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1959\" data-end=\"2005\">\u0627\u06cc\u0646 \u0628\u062e\u0634 \u0627\u0648\u0644\u06cc\u0646 \u0628\u0644\u0648\u06a9 \u067e\u06cc\u0627\u0645 Slack \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<hr data-start=\"2007\" data-end=\"2010\" \/>\n<h2 data-section-id=\"w4thqs\" data-start=\"2012\" data-end=\"2044\">\u0633\u0627\u062e\u062a \u0645\u062a\u062f \u0633\u0627\u0632\u0646\u062f\u0647 (Constructor)<\/h2>\n<p data-start=\"2046\" data-end=\"2116\">\u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0631\u0628\u0627\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u062f \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0628\u0647 \u06a9\u062f\u0627\u0645 \u06a9\u0627\u0646\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"2118\" data-end=\"2181\">\u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u06cc\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0634\u06cc\u0621 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">class<\/span> <span class=\"\u037c10\">CoinBot<\/span>:\r\n\r\n    ...\r\n\r\n    <span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">__init__<\/span>(<span class=\"\u037c11\">self<\/span>, <span class=\"\u037c11\">channel<\/span>):\r\n        <span class=\"\u037c11\">self<\/span><span class=\"\u037cv\">.<\/span>channel <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">channel<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2287\" data-end=\"2351\">\u0627\u0632 \u0627\u06cc\u0646 \u067e\u0633 \u0647\u0631 \u0634\u06cc\u0621 \u0627\u0632 \u06a9\u0644\u0627\u0633 CoinBot\u060c \u06a9\u0627\u0646\u0627\u0644 \u0645\u0642\u0635\u062f \u062e\u0648\u062f \u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u0646\u0627\u062e\u062a.<\/p>\n<hr data-start=\"2353\" data-end=\"2356\" \/>\n<h1 data-section-id=\"gi6u2o\" data-start=\"2358\" data-end=\"2379\">\u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647<\/h1>\n<p data-start=\"2381\" data-end=\"2419\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0642\u0633\u0645\u062a \u06a9\u0644\u0627\u0633 \u0631\u0627 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645.<\/p>\n<p data-start=\"2421\" data-end=\"2491\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0627\u0628\u0639 <code data-start=\"2440\" data-end=\"2458\">random.randint()<\/code> \u0639\u062f\u062f\u06cc \u0628\u06cc\u0646 \u0635\u0641\u0631 \u0648 \u06cc\u06a9 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"2493\" data-end=\"2557\">\u0627\u06af\u0631 \u0645\u0642\u062f\u0627\u0631 \u0635\u0641\u0631 \u0628\u0627\u0634\u062f \u0646\u062a\u06cc\u062c\u0647 <strong data-start=\"2518\" data-end=\"2525\">\u0634\u06cc\u0631<\/strong> \u0648 \u0627\u06af\u0631 \u06cc\u06a9 \u0628\u0627\u0634\u062f <strong data-start=\"2540\" data-end=\"2546\">\u062e\u0637<\/strong> \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">_flip_coin<\/span>(<span class=\"\u037c11\">self<\/span>):\r\n\r\n    <span class=\"\u037c11\">rand_int<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">random<\/span><span class=\"\u037cv\">.<\/span>randint(<span class=\"\u037cy\">0<\/span>, <span class=\"\u037cy\">1<\/span>)\r\n\r\n    <span class=\"\u037cv\">if<\/span> <span class=\"\u037c11\">rand_int<\/span> <span class=\"\u037cv\">==<\/span> <span class=\"\u037cy\">0<\/span>:\r\n        <span class=\"\u037c11\">result<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037cz\">\"\u0634\u06cc\u0631 \ud83e\udd81\"<\/span>\r\n    <span class=\"\u037cv\">else<\/span>:\r\n        <span class=\"\u037c11\">result<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037cz\">\"\u062e\u0637 \ud83e\ude99\"<\/span>\r\n\r\n    <span class=\"\u037c11\">text<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037cz\">f\"\u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647: **<\/span>{<span class=\"\u037c11\">result<\/span>}<span class=\"\u037cz\">**\"<\/span>\r\n\r\n    <span class=\"\u037cv\">return<\/span> {\r\n        <span class=\"\u037cz\">\"type\"<\/span>: <span class=\"\u037cz\">\"section\"<\/span>,\r\n        <span class=\"\u037cz\">\"text\"<\/span>: {\r\n            <span class=\"\u037cz\">\"type\"<\/span>: <span class=\"\u037cz\">\"mrkdwn\"<\/span>,\r\n            <span class=\"\u037cz\">\"text\"<\/span>: <span class=\"\u037c11\">text<\/span>\r\n        }\r\n    },<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2893\" data-end=\"2902\">\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627:<\/p>\n<ul data-start=\"2904\" data-end=\"3025\">\n<li data-section-id=\"pljvwb\" data-start=\"2904\" data-end=\"2949\"><code data-start=\"2906\" data-end=\"2924\">random.randint()<\/code> \u0639\u062f\u062f \u062a\u0635\u0627\u062f\u0641\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"z4dro9\" data-start=\"2950\" data-end=\"2975\">\u0645\u062a\u0646 \u062e\u0631\u0648\u062c\u06cc \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"zkwu1b\" data-start=\"2976\" data-end=\"3025\">\u062e\u0631\u0648\u062c\u06cc \u0628\u0647 \u0641\u0631\u0645\u062a \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 Slack \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<\/ul>\n<hr data-start=\"3027\" data-end=\"3030\" \/>\n<h1 data-section-id=\"3myw0s\" data-start=\"3032\" data-end=\"3049\">\u062a\u0648\u0644\u06cc\u062f \u067e\u06cc\u0627\u0645 \u06a9\u0627\u0645\u0644<\/h1>\n<p data-start=\"3051\" data-end=\"3084\">\u062f\u0631 \u0622\u062e\u0631 \u0628\u0627\u06cc\u062f \u067e\u06cc\u0627\u0645 \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645.<\/p>\n<p data-start=\"3086\" data-end=\"3100\">\u0627\u06cc\u0646 \u067e\u06cc\u0627\u0645 \u0634\u0627\u0645\u0644:<\/p>\n<ul data-start=\"3102\" data-end=\"3143\">\n<li data-section-id=\"2dsw4n\" data-start=\"3102\" data-end=\"3113\">\u0646\u0627\u0645 \u06a9\u0627\u0646\u0627\u0644<\/li>\n<li data-section-id=\"azeoxt\" data-start=\"3114\" data-end=\"3125\">\u0645\u062a\u0646 \u0627\u0648\u0644\u06cc\u0647<\/li>\n<li data-section-id=\"gictis\" data-start=\"3126\" data-end=\"3143\">\u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647<\/li>\n<\/ul>\n<p data-start=\"3145\" data-end=\"3155\">\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">get_message_payload<\/span>(<span class=\"\u037c11\">self<\/span>):\r\n\r\n    <span class=\"\u037cv\">return<\/span> {\r\n        <span class=\"\u037cz\">\"channel\"<\/span>: <span class=\"\u037c11\">self<\/span><span class=\"\u037cv\">.<\/span>channel,\r\n        <span class=\"\u037cz\">\"blocks\"<\/span>: [\r\n            <span class=\"\u037c11\">self<\/span><span class=\"\u037cv\">.<\/span>COIN_BLOCK,\r\n            <span class=\"\u037cv\">*<\/span><span class=\"\u037c11\">self<\/span><span class=\"\u037cv\">.<\/span>_flip_coin(),\r\n        ],\r\n    }<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3348\" data-end=\"3411\">\u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0631\u0627\u06cc Slack API \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"3413\" data-end=\"3416\" \/>\n<h1 data-section-id=\"116j7gb\" data-start=\"3418\" data-end=\"3441\">\u0641\u0627\u06cc\u0644 \u0646\u0647\u0627\u06cc\u06cc coinbot.py<\/h1>\n<p data-start=\"3443\" data-end=\"3492\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0686\u06cc\u0632\u06cc \u0645\u0634\u0627\u0628\u0647 \u0646\u0645\u0648\u0646\u0647 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">random<\/span>\r\n\r\n\r\n<span class=\"\u037cv\">class<\/span> <span class=\"\u037c10\">CoinBot<\/span>:\r\n\r\n    <span class=\"\u037c11\">COIN_BLOCK<\/span> <span class=\"\u037cv\">=<\/span> {\r\n        <span class=\"\u037cz\">\"type\"<\/span>: <span class=\"\u037cz\">\"section\"<\/span>,\r\n        <span class=\"\u037cz\">\"text\"<\/span>: {\r\n            <span class=\"\u037cz\">\"type\"<\/span>: <span class=\"\u037cz\">\"mrkdwn\"<\/span>,\r\n            <span class=\"\u037cz\">\"text\"<\/span>: (\r\n                <span class=\"\u037cz\">\"\u062f\u0631 \u062d\u0627\u0644 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647...<\/span><span class=\"\u037c15\">\\n\\n<\/span><span class=\"\u037cz\">\"<\/span>\r\n            ),\r\n        },\r\n    }\r\n\r\n    <span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">__init__<\/span>(<span class=\"\u037c11\">self<\/span>, <span class=\"\u037c11\">channel<\/span>):\r\n        <span class=\"\u037c11\">self<\/span><span class=\"\u037cv\">.<\/span>channel <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">channel<\/span>\r\n\r\n    <span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">_flip_coin<\/span>(<span class=\"\u037c11\">self<\/span>):\r\n\r\n        <span class=\"\u037c11\">rand_int<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">random<\/span><span class=\"\u037cv\">.<\/span>randint(<span class=\"\u037cy\">0<\/span>, <span class=\"\u037cy\">1<\/span>)\r\n\r\n        <span class=\"\u037cv\">if<\/span> <span class=\"\u037c11\">rand_int<\/span> <span class=\"\u037cv\">==<\/span> <span class=\"\u037cy\">0<\/span>:\r\n            <span class=\"\u037c11\">result<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037cz\">\"\u0634\u06cc\u0631 \ud83e\udd81\"<\/span>\r\n        <span class=\"\u037cv\">else<\/span>:\r\n            <span class=\"\u037c11\">result<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037cz\">\"\u062e\u0637 \ud83e\ude99\"<\/span>\r\n\r\n        <span class=\"\u037c11\">text<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037cz\">f\"\u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647: **<\/span>{<span class=\"\u037c11\">result<\/span>}<span class=\"\u037cz\">**\"<\/span>\r\n\r\n        <span class=\"\u037cv\">return<\/span> {\r\n            <span class=\"\u037cz\">\"type\"<\/span>: <span class=\"\u037cz\">\"section\"<\/span>,\r\n            <span class=\"\u037cz\">\"text\"<\/span>: {\r\n                <span class=\"\u037cz\">\"type\"<\/span>: <span class=\"\u037cz\">\"mrkdwn\"<\/span>,\r\n                <span class=\"\u037cz\">\"text\"<\/span>: <span class=\"\u037c11\">text<\/span>\r\n            }\r\n        },\r\n\r\n    <span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">get_message_payload<\/span>(<span class=\"\u037c11\">self<\/span>):\r\n\r\n        <span class=\"\u037cv\">return<\/span> {\r\n            <span class=\"\u037cz\">\"channel\"<\/span>: <span class=\"\u037c11\">self<\/span><span class=\"\u037cv\">.<\/span>channel,\r\n            <span class=\"\u037cz\">\"blocks\"<\/span>: [\r\n                <span class=\"\u037c11\">self<\/span><span class=\"\u037cv\">.<\/span>COIN_BLOCK,\r\n                <span class=\"\u037cv\">*<\/span><span class=\"\u037c11\">self<\/span><span class=\"\u037cv\">.<\/span>_flip_coin(),\r\n            ],\r\n        }<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<blockquote data-start=\"4381\" data-end=\"4568\">\n<p data-start=\"4383\" data-end=\"4568\"><strong data-start=\"4383\" data-end=\"4392\">\u0646\u06a9\u062a\u0647:<\/strong> \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0645\u062a\u0646 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0631\u0628\u0627\u062a \u0628\u0647 \u0641\u0627\u0631\u0633\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062a\u0627 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0647\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0641\u0627\u0631\u0633\u06cc\u200c\u0632\u0628\u0627\u0646 \u0641\u0631\u0627\u0647\u0645 \u0634\u0648\u062f. \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u062a\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0632\u0628\u0627\u0646 \u062f\u0644\u062e\u0648\u0627\u0647 \u062e\u0648\u062f \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"4570\" data-end=\"4573\" \/>\n<h2 data-section-id=\"i3zmkx\" data-start=\"4575\" data-end=\"4603\">\u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f \u0686\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u061f<\/h2>\n<p data-start=\"4605\" data-end=\"4794\" data-is-last-node=\"\" data-is-only-node=\"\">\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062a\u0633\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a Event \u0627\u0632 Slack\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0628\u0627\u062a \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645. \u0633\u067e\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"4728\" data-end=\"4745\">Slack Web API<\/strong> \u0627\u0648\u0644\u06cc\u0646 \u067e\u06cc\u0627\u0645 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"2814\" data-end=\"2817\" \/>\n<div class=\"qMYqUG_convSearchResultHighlightRoot\">\n<div class=\"\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-10\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-10\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-10\" data-testid=\"conversation-turn-640\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-15 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" data-conversation-screenshot-content=\"\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"f90c1d90-bc73-4e65-9b7e-b4a90375a960\" data-message-model-slug=\"gpt-5-5\" data-turn-start-message=\"true\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full dark markdown-new-styling\">\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1ib4ve1\" data-start=\"0\" data-end=\"35\">\u0645\u0631\u062d\u0644\u0647 \u0686\u0647\u0627\u0631\u0645 \u2014 \u062a\u0633\u062a \u0639\u0645\u0644\u06a9\u0631\u062f Slackbot<\/h1>\n<p data-start=\"37\" data-end=\"213\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u06a9\u0644\u0627\u0633 <strong data-start=\"51\" data-end=\"62\">CoinBot<\/strong> \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0642\u0628\u0644 \u0627\u0632 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0628\u062e\u0634 \u062f\u0631\u06cc\u0627\u0641\u062a \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 (Events)\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u0645 \u0631\u0628\u0627\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 Slack \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"215\" data-end=\"331\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"283\" data-end=\"300\">Slack Web API<\/strong> \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062f\u0631 \u06a9\u0627\u0646\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"333\" data-end=\"336\" \/>\n<h1 data-section-id=\"zhkrt7\" data-start=\"338\" data-end=\"353\">\u0633\u0627\u062e\u062a \u0641\u0627\u06cc\u0644 \u062a\u0633\u062a<\/h1>\n<p data-start=\"355\" data-end=\"384\">\u0627\u0628\u062a\u062f\u0627 \u0641\u0627\u06cc\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">touch<\/span> coinbot_test.py<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"433\" data-end=\"471\">\u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u062f\u0644\u062e\u0648\u0627\u0647 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>nano coinbot_test.py<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"519\" data-end=\"522\" \/>\n<h1 data-section-id=\"1wx7b0l\" data-start=\"524\" data-end=\"538\">\u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u062a\u0633\u062a<\/h1>\n<p data-start=\"540\" data-end=\"570\">\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<blockquote data-start=\"572\" data-end=\"668\">\n<p data-start=\"574\" data-end=\"668\"><strong data-start=\"574\" data-end=\"583\">\u0646\u06a9\u062a\u0647:<\/strong> \u0645\u0642\u062f\u0627\u0631 <code data-start=\"590\" data-end=\"605\">#YOUR_CHANNEL<\/code> \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0646\u0627\u0644\u06cc \u06a9\u0647 \u0631\u0628\u0627\u062a \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">slack<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">WebClient<\/span>\r\n<span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">coinbot<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">CoinBot<\/span>\r\n<span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">os<\/span>\r\n\r\n<span class=\"\u037ct\"># \u0627\u06cc\u062c\u0627\u062f Web Client<\/span>\r\n<span class=\"\u037c11\">slack_web_client<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">WebClient<\/span>(\r\n    <span class=\"\u037c11\">token<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037c11\">os<\/span><span class=\"\u037cv\">.<\/span>environ<span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"SLACK_TOKEN\"<\/span>)\r\n)\r\n\r\n<span class=\"\u037ct\"># \u0633\u0627\u062e\u062a \u0634\u06cc\u0621 CoinBot<\/span>\r\n<span class=\"\u037c11\">coin_bot<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">CoinBot<\/span>(<span class=\"\u037cz\">\"#YOUR_CHANNEL\"<\/span>)\r\n\r\n<span class=\"\u037ct\"># \u062a\u0648\u0644\u06cc\u062f \u067e\u06cc\u0627\u0645<\/span>\r\n<span class=\"\u037c11\">message<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">coin_bot<\/span><span class=\"\u037cv\">.<\/span>get_message_payload()\r\n\r\n<span class=\"\u037ct\"># \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645<\/span>\r\n<span class=\"\u037c11\">slack_web_client<\/span><span class=\"\u037cv\">.<\/span>chat_postMessage(<span class=\"\u037cv\">**<\/span><span class=\"\u037c11\">message<\/span>)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1025\" data-end=\"1067\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0627\u0632 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n<hr data-start=\"1069\" data-end=\"1072\" \/>\n<h1 data-section-id=\"8wtb9c\" data-start=\"1074\" data-end=\"1092\">\u062a\u0646\u0638\u06cc\u0645 \u062a\u0648\u06a9\u0646 Slack<\/h1>\n<p data-start=\"1094\" data-end=\"1200\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0627 Slack \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u062f\u060c \u0628\u0627\u06cc\u062f <strong data-start=\"1152\" data-end=\"1165\">Bot Token<\/strong> \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1202\" data-end=\"1276\">\u062a\u0648\u06a9\u0646\u06cc \u06a9\u0647 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644 \u0627\u0632 \u0628\u062e\u0634 OAuth \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u06cc\u062f \u0631\u0627 \u062f\u0631 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">export<\/span> <span class=\"\u037c11\">SLACK_TOKEN<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037cz\">\"xoxb-your-bot-token\"<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1344\" data-end=\"1414\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u062b\u0628\u062a \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">echo<\/span> <span class=\"\u037c11\">$SLACK_TOKEN<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1459\" data-end=\"1508\">\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u062a\u0648\u06a9\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u060c \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062f\u0631\u0633\u062a \u0627\u0633\u062a.<\/p>\n<hr data-start=\"1510\" data-end=\"1513\" \/>\n<h1 data-section-id=\"1i79al\" data-start=\"1515\" data-end=\"1529\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"1531\" data-end=\"1577\">\u0627\u0628\u062a\u062f\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f Virtual Environment \u0641\u0639\u0627\u0644 \u0627\u0633\u062a.<\/p>\n<p data-start=\"1579\" data-end=\"1593\">\u0627\u06af\u0631 \u0641\u0639\u0627\u0644 \u0646\u06cc\u0633\u062a:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">source<\/span> ~\/.venvs\/slackbot\/bin\/activate<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1658\" data-end=\"1686\">\u0633\u067e\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0633\u062a \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>python coinbot_test.py<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1736\" data-end=\"1803\">\u0627\u06af\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 \u062e\u0637\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"1805\" data-end=\"1808\" \/>\n<h1 data-section-id=\"177yeai\" data-start=\"1810\" data-end=\"1823\">\u0628\u0631\u0631\u0633\u06cc \u0646\u062a\u06cc\u062c\u0647<\/h1>\n<p data-start=\"1825\" data-end=\"1914\">\u0627\u06a9\u0646\u0648\u0646 \u0648\u0627\u0631\u062f Workspace \u062e\u0648\u062f \u062f\u0631 Slack \u0634\u0648\u06cc\u062f \u0648 \u06a9\u0627\u0646\u0627\u0644\u06cc \u06a9\u0647 \u0631\u0628\u0627\u062a \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1916\" data-end=\"1955\">\u0628\u0627\u06cc\u062f \u067e\u06cc\u0627\u0645\u06cc \u0645\u0634\u0627\u0628\u0647 \u062a\u0635\u0648\u06cc\u0631 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>\u062f\u0631 \u062d\u0627\u0644 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647...\r\n\r\n\u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647: \u0634\u06cc\u0631 \ud83e\udd81<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2027\" data-end=\"2029\">\u06cc\u0627<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>\u062f\u0631 \u062d\u0627\u0644 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647...\r\n\r\n\u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647: \u062e\u0637 \ud83e\ude99<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2100\" data-end=\"2190\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062a\u0635\u0627\u062f\u0641\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0647\u0631 \u0628\u0627\u0631 \u062e\u0631\u0648\u062c\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"2192\" data-end=\"2195\" \/>\n<h1 data-section-id=\"leuznm\" data-start=\"2197\" data-end=\"2210\">\u062e\u0637\u0627\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c<\/h1>\n<p data-start=\"2212\" data-end=\"2256\">\u0627\u06af\u0631 \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u062f\u060c \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<h3 data-section-id=\"16szwnu\" data-start=\"2258\" data-end=\"2273\">\u062a\u0648\u06a9\u0646 \u0627\u0634\u062a\u0628\u0627\u0647<\/h3>\n<p data-start=\"2275\" data-end=\"2310\">\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0628\u0627 \u062e\u0637\u0627\u06cc \u0632\u06cc\u0631 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>invalid_auth<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2350\" data-end=\"2407\">\u062a\u0648\u06a9\u0646 <code data-start=\"2355\" data-end=\"2368\">SLACK_TOKEN<\/code> \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a \u06cc\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"2409\" data-end=\"2412\" \/>\n<h3 data-section-id=\"18vzx36\" data-start=\"2414\" data-end=\"2446\">\u0631\u0628\u0627\u062a \u0628\u0647 \u06a9\u0627\u0646\u0627\u0644 \u0627\u0636\u0627\u0641\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a<\/h3>\n<p data-start=\"2448\" data-end=\"2477\">\u0627\u06af\u0631 \u062e\u0637\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>channel_not_found<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2522\" data-end=\"2531\">\u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b:<\/p>\n<ul data-start=\"2533\" data-end=\"2597\">\n<li data-section-id=\"1g32rg6\" data-start=\"2533\" data-end=\"2560\">\u0631\u0628\u0627\u062a \u0647\u0646\u0648\u0632 \u0639\u0636\u0648 \u06a9\u0627\u0646\u0627\u0644 \u0646\u06cc\u0633\u062a.<\/li>\n<li data-section-id=\"1coue3r\" data-start=\"2561\" data-end=\"2597\">\u0646\u0627\u0645 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u0627\u0634\u062a\u0628\u0627\u0647 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f.<\/li>\n<\/ul>\n<p data-start=\"2599\" data-end=\"2655\">\u0627\u0628\u062a\u062f\u0627 \u0631\u0628\u0627\u062a \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0646\u0627\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0633\u067e\u0633 \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"2657\" data-end=\"2660\" \/>\n<h3 data-section-id=\"sust00\" data-start=\"2662\" data-end=\"2692\">\u0645\u062c\u0648\u0632 \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f<\/h3>\n<p data-start=\"2694\" data-end=\"2724\">\u0627\u06af\u0631 \u062e\u0637\u0627\u06cc\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u0634\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>missing_scope<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2765\" data-end=\"2812\">\u06cc\u0639\u0646\u06cc \u0645\u062c\u0648\u0632 <code data-start=\"2775\" data-end=\"2787\">chat:write<\/code> \u0628\u0631\u0627\u06cc \u0631\u0628\u0627\u062a \u0641\u0639\u0627\u0644 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p data-start=\"2814\" data-end=\"2922\">\u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 Slack \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0627\u06cc\u0646 Scope \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0633\u067e\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0646\u0635\u0628 (Reinstall) \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"2924\" data-end=\"2927\" \/>\n<h2 data-section-id=\"1ib6vkp\" data-start=\"2929\" data-end=\"2947\">\u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647<\/h2>\n<p data-start=\"2949\" data-end=\"2982\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647:<\/p>\n<ul data-start=\"2984\" data-end=\"3142\">\n<li data-section-id=\"iwjib\" data-start=\"2984\" data-end=\"3020\">\u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 Slack \u0628\u0631\u0642\u0631\u0627\u0631 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"1dhvte3\" data-start=\"3021\" data-end=\"3068\">\u06a9\u0644\u0627\u0633 <code data-start=\"3028\" data-end=\"3037\">CoinBot<\/code> \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc Payload \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"14bfhhx\" data-start=\"3069\" data-end=\"3107\">\u067e\u06cc\u0627\u0645 \u0627\u0632 \u0637\u0631\u06cc\u0642 Slack API \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"5dioci\" data-start=\"3108\" data-end=\"3142\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0635\u062d\u06cc\u062d \u0647\u0633\u062a\u0646\u062f.<\/li>\n<\/ul>\n<hr data-start=\"3144\" data-end=\"3147\" \/>\n<h2 data-section-id=\"i3zmkx\" data-start=\"3149\" data-end=\"3177\">\u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f \u0686\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u061f<\/h2>\n<p data-start=\"3179\" data-end=\"3385\" data-is-last-node=\"\" data-is-only-node=\"\">\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u067e\u0646\u062c\u0645\u060c \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 <strong data-start=\"3204\" data-end=\"3213\">Flask<\/strong> \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0631\u0628\u0627\u062a \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0627\u0626\u0645\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u0648 \u0628\u062a\u0648\u0627\u0646\u062f \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644\u06cc \u062f\u0631 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0639\u0628\u0627\u0631\u062a \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647\u060c \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f.<\/p>\n<hr data-start=\"2814\" data-end=\"2817\" \/>\n<div class=\"qMYqUG_convSearchResultHighlightRoot\">\n<div class=\"\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-11\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-11\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-11\" data-testid=\"conversation-turn-642\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-15 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" data-conversation-screenshot-content=\"\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"41c14776-e69b-4816-ad16-d3389b4d22e3\" data-message-model-slug=\"gpt-5-5\" data-turn-start-message=\"true\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full dark markdown-new-styling\">\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"sx5n2j\" data-start=\"0\" data-end=\"58\">\u0645\u0631\u062d\u0644\u0647 \u067e\u0646\u062c\u0645 \u2014 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 Flask \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062f\u0627\u0626\u0645\u06cc Slackbot<\/h1>\n<p data-start=\"60\" data-end=\"203\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627\u06cc \u06a9\u0627\u0631 \u062a\u0648\u0627\u0646\u0633\u062a\u06cc\u0645 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0647 Slack \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u067e\u0633 \u0627\u0632 \u067e\u0627\u06cc\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0631\u0628\u0627\u062a \u062f\u06cc\u06af\u0631 \u0641\u0639\u0627\u0644 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p data-start=\"205\" data-end=\"311\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0631\u0628\u0627\u062a \u0647\u0645\u06cc\u0634\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0627\u0634\u062f \u0648 \u0628\u062a\u0648\u0627\u0646\u062f \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u062f\u060c \u0627\u0632 <strong data-start=\"285\" data-end=\"294\">Flask<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"313\" data-end=\"488\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u06cc\u06a9 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u06a9\u0648\u0686\u06a9 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc (Events) \u0627\u0631\u0633\u0627\u0644\u06cc \u0627\u0632 Slack \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0639\u0628\u0627\u0631\u062a \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647\u060c \u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0631\u0627 \u062f\u0631 \u0647\u0645\u0627\u0646 \u06a9\u0627\u0646\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"490\" data-end=\"493\" \/>\n<h1 data-section-id=\"d5va10\" data-start=\"495\" data-end=\"515\">\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0648\u0631\u062a 3000<\/h1>\n<p data-start=\"517\" data-end=\"622\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 Slack \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0645\u062a\u0635\u0644 \u0634\u0648\u062f\u060c \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u067e\u0648\u0631\u062a \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> ufw allow <span class=\"\u037cy\">3000<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"657\" data-end=\"689\">\u0633\u067e\u0633 \u0648\u0636\u0639\u06cc\u062a \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> ufw status<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"720\" data-end=\"732\">\u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Status: active\r\n\r\nTo                         Action      From\r\n--                         ------      ----\r\nOpenSSH                    ALLOW\r\n3000                       ALLOW<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"917\" data-end=\"920\" \/>\n<h1 data-section-id=\"1f98n0u\" data-start=\"922\" data-end=\"947\">\u0627\u06cc\u062c\u0627\u062f \u0641\u0627\u06cc\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 Flask<\/h1>\n<p data-start=\"949\" data-end=\"986\">\u0627\u0628\u062a\u062f\u0627 \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">touch<\/span> app.py<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1014\" data-end=\"1033\">\u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>nano app.py<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1060\" data-end=\"1063\" \/>\n<h1 data-section-id=\"bj2bse\" data-start=\"1065\" data-end=\"1088\">\u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627<\/h1>\n<p data-start=\"1090\" data-end=\"1139\">\u0627\u0628\u062a\u062f\u0627\u06cc \u0641\u0627\u06cc\u0644\u060c \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">os<\/span>\r\n<span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">logging<\/span>\r\n\r\n<span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">flask<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">Flask<\/span>\r\n<span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">slack<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">WebClient<\/span>\r\n<span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">slackeventsapi<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">SlackEventAdapter<\/span>\r\n\r\n<span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">coinbot<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">CoinBot<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1308\" data-end=\"1317\">\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627:<\/p>\n<ul data-start=\"1319\" data-end=\"1539\">\n<li data-section-id=\"1me6kqu\" data-start=\"1319\" data-end=\"1366\"><strong data-start=\"1321\" data-end=\"1330\">Flask<\/strong> \u0648\u0638\u06cc\u0641\u0647 \u0627\u062c\u0631\u0627\u06cc \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u0631\u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f.<\/li>\n<li data-section-id=\"179mf2s\" data-start=\"1367\" data-end=\"1423\"><strong data-start=\"1369\" data-end=\"1382\">WebClient<\/strong> \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0628\u0647 Slack \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"s1flf2\" data-start=\"1424\" data-end=\"1481\"><strong data-start=\"1426\" data-end=\"1447\">SlackEventAdapter<\/strong> \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc Slack \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"1q2vts9\" data-start=\"1482\" data-end=\"1539\"><strong data-start=\"1484\" data-end=\"1495\">CoinBot<\/strong> \u0647\u0645\u0627\u0646 \u06a9\u0644\u0627\u0633\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0642\u0628\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645.<\/li>\n<\/ul>\n<hr data-start=\"1541\" data-end=\"1544\" \/>\n<h1 data-section-id=\"1m4996o\" data-start=\"1546\" data-end=\"1566\">\u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647 Flask<\/h1>\n<p data-start=\"1568\" data-end=\"1610\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 Flask \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c11\">app<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">Flask<\/span>(<span class=\"\u037c11\">__name__<\/span>)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1649\" data-end=\"1652\" \/>\n<h1 data-section-id=\"1opd04y\" data-start=\"1654\" data-end=\"1687\">\u062b\u0628\u062a \u0645\u0633\u06cc\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc Slack<\/h1>\n<p data-start=\"1689\" data-end=\"1774\">Slack \u0647\u0646\u06af\u0627\u0645 \u0648\u0642\u0648\u0639 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 (\u0645\u0627\u0646\u0646\u062f \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645) \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc\u06cc \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"1776\" data-end=\"1832\">\u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 Endpoint \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c11\">slack_events_adapter<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">SlackEventAdapter<\/span>(\r\n    <span class=\"\u037c11\">os<\/span><span class=\"\u037cv\">.<\/span>environ<span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"SLACK_EVENTS_TOKEN\"<\/span>),\r\n    <span class=\"\u037cz\">\"\/slack\/events\"<\/span>,\r\n    <span class=\"\u037c11\">app<\/span>\r\n)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1964\" data-end=\"2074\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0627\u0632 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc <strong data-start=\"1990\" data-end=\"2012\">SLACK_EVENTS_TOKEN<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"2076\" data-end=\"2079\" \/>\n<h1 data-section-id=\"9loom8\" data-start=\"2081\" data-end=\"2099\">\u0627\u06cc\u062c\u0627\u062f Web Client<\/h1>\n<p data-start=\"2101\" data-end=\"2153\">\u0627\u06a9\u0646\u0648\u0646 \u0634\u06cc\u0621 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 Slack \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c11\">slack_web_client<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">WebClient<\/span>(\r\n    <span class=\"\u037c11\">token<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037c11\">os<\/span><span class=\"\u037cv\">.<\/span>environ<span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"SLACK_TOKEN\"<\/span>)\r\n)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2242\" data-end=\"2299\">\u0627\u06cc\u0646 \u0634\u06cc\u0621 \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0628\u0647 Workspace \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"2301\" data-end=\"2304\" \/>\n<h1 data-section-id=\"1oz9rr7\" data-start=\"2306\" data-end=\"2329\">\u0627\u06cc\u062c\u0627\u062f \u062a\u0627\u0628\u0639 \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645<\/h1>\n<p data-start=\"2331\" data-end=\"2407\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0646\u062f \u0628\u0627\u0631 \u06a9\u062f \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u0646\u06a9\u0646\u06cc\u0645\u060c \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0645\u062c\u0632\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">flip_coin<\/span>(<span class=\"\u037c11\">channel<\/span>):\r\n\r\n    <span class=\"\u037ct\"># \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u0627\u0632 CoinBot<\/span>\r\n    <span class=\"\u037c11\">coin_bot<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">CoinBot<\/span>(<span class=\"\u037c11\">channel<\/span>)\r\n\r\n    <span class=\"\u037ct\"># \u062a\u0648\u0644\u06cc\u062f Payload<\/span>\r\n    <span class=\"\u037c11\">message<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">coin_bot<\/span><span class=\"\u037cv\">.<\/span>get_message_payload()\r\n\r\n    <span class=\"\u037ct\"># \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645<\/span>\r\n    <span class=\"\u037c11\">slack_web_client<\/span><span class=\"\u037cv\">.<\/span>chat_postMessage(<span class=\"\u037cv\">**<\/span><span class=\"\u037c11\">message<\/span>)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2648\" data-end=\"2739\">\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u062a\u0646\u0647\u0627 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0631\u0627 \u062f\u0631 \u0647\u0645\u0627\u0646 \u06a9\u0627\u0646\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"2741\" data-end=\"2744\" \/>\n<h1 data-section-id=\"uspji6\" data-start=\"2746\" data-end=\"2769\">\u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc Slack<\/h1>\n<p data-start=\"2771\" data-end=\"2811\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0642\u0633\u0645\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645.<\/p>\n<p data-start=\"2813\" data-end=\"2915\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u06a9\u0648\u0631\u0627\u062a\u0648\u0631 \u0632\u06cc\u0631\u060c \u0647\u0631 \u0632\u0645\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u0646\u0648\u0639 <strong data-start=\"2869\" data-end=\"2880\">message<\/strong> \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u0648\u062f\u060c \u062a\u0627\u0628\u0639 \u0645\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cu\">@<\/span><span class=\"\u037c11\">slack_events_adapter<\/span><span class=\"\u037cv\">.<\/span><span class=\"\u037c11\">on<\/span>(<span class=\"\u037cz\">\"message\"<\/span>)\r\n<span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">message<\/span>(<span class=\"\u037c11\">payload<\/span>):<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2990\" data-end=\"3038\">\u062f\u0627\u062e\u0644 \u062a\u0627\u0628\u0639 \u0627\u0628\u062a\u062f\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c11\">event<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">payload<\/span><span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"event\"<\/span>, {})\r\n<span class=\"\u037c11\">text<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">event<\/span><span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"text\"<\/span>)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3113\" data-end=\"3116\" \/>\n<h1 data-section-id=\"15qpdfu\" data-start=\"3118\" data-end=\"3142\">\u0628\u0631\u0631\u0633\u06cc \u0639\u0628\u0627\u0631\u062a \u0641\u0639\u0627\u0644\u200c\u06a9\u0646\u0646\u062f\u0647<\/h1>\n<p data-start=\"3144\" data-end=\"3193\">\u0641\u0631\u0636 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062c\u0645\u0644\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Hey Sammy, Flip a coin<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3231\" data-end=\"3250\">\u0631\u0628\u0627\u062a \u0628\u0627\u06cc\u062f \u067e\u0627\u0633\u062e \u062f\u0647\u062f.<\/p>\n<p data-start=\"3252\" data-end=\"3282\">\u06a9\u062f \u0628\u0631\u0631\u0633\u06cc \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">if<\/span> <span class=\"\u037cz\">\"hey sammy, flip a coin\"<\/span> <span class=\"\u037cv\">in<\/span> <span class=\"\u037c11\">text<\/span><span class=\"\u037cv\">.<\/span>lower():\r\n\r\n    <span class=\"\u037c11\">channel_id<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">event<\/span><span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"channel\"<\/span>)\r\n\r\n    <span class=\"\u037cv\">return<\/span> <span class=\"\u037c11\">flip_coin<\/span>(<span class=\"\u037c11\">channel_id<\/span>)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3417\" data-end=\"3484\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code data-start=\"3431\" data-end=\"3440\">lower()<\/code> \u062a\u0641\u0627\u0648\u062a \u062d\u0631\u0648\u0641 \u0628\u0632\u0631\u06af \u0648 \u06a9\u0648\u0686\u06a9 \u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<hr data-start=\"3486\" data-end=\"3489\" \/>\n<h1 data-section-id=\"hroeam\" data-start=\"3491\" data-end=\"3511\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Flask<\/h1>\n<p data-start=\"3513\" data-end=\"3552\">\u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">if<\/span> <span class=\"\u037c11\">__name__<\/span> <span class=\"\u037cv\">==<\/span> <span class=\"\u037cz\">\"__main__\"<\/span>:\r\n\r\n    <span class=\"\u037c11\">logger<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">logging<\/span><span class=\"\u037cv\">.<\/span>getLogger()\r\n\r\n    <span class=\"\u037c11\">logger<\/span><span class=\"\u037cv\">.<\/span>setLevel(<span class=\"\u037c11\">logging<\/span><span class=\"\u037cv\">.<\/span>DEBUG)\r\n\r\n    <span class=\"\u037c11\">logger<\/span><span class=\"\u037cv\">.<\/span>addHandler(<span class=\"\u037c11\">logging<\/span><span class=\"\u037cv\">.<\/span>StreamHandler())\r\n\r\n    <span class=\"\u037c11\">app<\/span><span class=\"\u037cv\">.<\/span>run(\r\n        <span class=\"\u037c11\">host<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037cz\">\"0.0.0.0\"<\/span>,\r\n        <span class=\"\u037c11\">port<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037cy\">3000<\/span>\r\n    )<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3776\" data-end=\"3853\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc \u062a\u0645\u0627\u0645 Interface\u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0648 \u067e\u0648\u0631\u062a <strong data-start=\"3830\" data-end=\"3838\">3000<\/strong> \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"3855\" data-end=\"3858\" \/>\n<h1 data-section-id=\"s2kco\" data-start=\"3860\" data-end=\"3879\">\u0641\u0627\u06cc\u0644 \u0646\u0647\u0627\u06cc\u06cc app.py<\/h1>\n<p data-start=\"3881\" data-end=\"3933\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">os<\/span>\r\n<span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">logging<\/span>\r\n\r\n<span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">flask<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">Flask<\/span>\r\n<span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">slack<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">WebClient<\/span>\r\n<span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">slackeventsapi<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">SlackEventAdapter<\/span>\r\n\r\n<span class=\"\u037cv\">from<\/span> <span class=\"\u037c11\">coinbot<\/span> <span class=\"\u037cv\">import<\/span> <span class=\"\u037c11\">CoinBot<\/span>\r\n\r\n<span class=\"\u037c11\">app<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">Flask<\/span>(<span class=\"\u037c11\">__name__<\/span>)\r\n\r\n<span class=\"\u037c11\">slack_events_adapter<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">SlackEventAdapter<\/span>(\r\n    <span class=\"\u037c11\">os<\/span><span class=\"\u037cv\">.<\/span>environ<span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"SLACK_EVENTS_TOKEN\"<\/span>),\r\n    <span class=\"\u037cz\">\"\/slack\/events\"<\/span>,\r\n    <span class=\"\u037c11\">app<\/span>\r\n)\r\n\r\n<span class=\"\u037c11\">slack_web_client<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">WebClient<\/span>(\r\n    <span class=\"\u037c11\">token<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037c11\">os<\/span><span class=\"\u037cv\">.<\/span>environ<span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"SLACK_TOKEN\"<\/span>)\r\n)\r\n\r\n\r\n<span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">flip_coin<\/span>(<span class=\"\u037c11\">channel<\/span>):\r\n\r\n    <span class=\"\u037c11\">coin_bot<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">CoinBot<\/span>(<span class=\"\u037c11\">channel<\/span>)\r\n\r\n    <span class=\"\u037c11\">message<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">coin_bot<\/span><span class=\"\u037cv\">.<\/span>get_message_payload()\r\n\r\n    <span class=\"\u037c11\">slack_web_client<\/span><span class=\"\u037cv\">.<\/span>chat_postMessage(<span class=\"\u037cv\">**<\/span><span class=\"\u037c11\">message<\/span>)\r\n\r\n\r\n<span class=\"\u037cu\">@<\/span><span class=\"\u037c11\">slack_events_adapter<\/span><span class=\"\u037cv\">.<\/span><span class=\"\u037c11\">on<\/span>(<span class=\"\u037cz\">\"message\"<\/span>)\r\n<span class=\"\u037cv\">def<\/span> <span class=\"\u037c11\">message<\/span>(<span class=\"\u037c11\">payload<\/span>):\r\n\r\n    <span class=\"\u037c11\">event<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">payload<\/span><span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"event\"<\/span>, {})\r\n\r\n    <span class=\"\u037c11\">text<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">event<\/span><span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"text\"<\/span>)\r\n\r\n    <span class=\"\u037cv\">if<\/span> <span class=\"\u037c11\">text<\/span> <span class=\"\u037cv\">and<\/span> <span class=\"\u037cz\">\"hey sammy, flip a coin\"<\/span> <span class=\"\u037cv\">in<\/span> <span class=\"\u037c11\">text<\/span><span class=\"\u037cv\">.<\/span>lower():\r\n\r\n        <span class=\"\u037c11\">channel_id<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">event<\/span><span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">\"channel\"<\/span>)\r\n\r\n        <span class=\"\u037cv\">return<\/span> <span class=\"\u037c11\">flip_coin<\/span>(<span class=\"\u037c11\">channel_id<\/span>)\r\n\r\n\r\n<span class=\"\u037cv\">if<\/span> <span class=\"\u037c11\">__name__<\/span> <span class=\"\u037cv\">==<\/span> <span class=\"\u037cz\">\"__main__\"<\/span>:\r\n\r\n    <span class=\"\u037c11\">logger<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">logging<\/span><span class=\"\u037cv\">.<\/span>getLogger()\r\n\r\n    <span class=\"\u037c11\">logger<\/span><span class=\"\u037cv\">.<\/span>setLevel(<span class=\"\u037c11\">logging<\/span><span class=\"\u037cv\">.<\/span>DEBUG)\r\n\r\n    <span class=\"\u037c11\">logger<\/span><span class=\"\u037cv\">.<\/span>addHandler(<span class=\"\u037c11\">logging<\/span><span class=\"\u037cv\">.<\/span>StreamHandler())\r\n\r\n    <span class=\"\u037c11\">app<\/span><span class=\"\u037cv\">.<\/span>run(<span class=\"\u037c11\">host<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037cz\">\"0.0.0.0\"<\/span>, <span class=\"\u037c11\">port<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037cy\">3000<\/span>)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"4924\" data-end=\"4927\" \/>\n<h2 data-section-id=\"1ib6vkp\" data-start=\"4929\" data-end=\"4947\">\u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647<\/h2>\n<p data-start=\"4949\" data-end=\"4966\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0628\u062e\u0634:<\/p>\n<ul data-start=\"4968\" data-end=\"5174\">\n<li data-section-id=\"1mes7b0\" data-start=\"4968\" data-end=\"4999\">\u06cc\u06a9 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 Flask \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u062f.<\/li>\n<li data-section-id=\"e7kd1v\" data-start=\"5000\" data-end=\"5060\">\u0645\u0633\u06cc\u0631 <code data-start=\"5007\" data-end=\"5022\">\/slack\/events<\/code> \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc Slack \u0622\u0645\u0627\u062f\u0647 \u0634\u062f.<\/li>\n<li data-section-id=\"myybs1\" data-start=\"5061\" data-end=\"5105\">\u0631\u0628\u0627\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"uwut9q\" data-start=\"5106\" data-end=\"5174\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0639\u0628\u0627\u0631\u062a \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647\u060c \u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/li>\n<\/ul>\n<hr data-start=\"5176\" data-end=\"5179\" \/>\n<h2 data-section-id=\"i3zmkx\" data-start=\"5181\" data-end=\"5209\">\u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f \u0686\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u061f<\/h2>\n<p data-start=\"5211\" data-end=\"5434\" data-is-last-node=\"\" data-is-only-node=\"\">\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0634\u0634\u0645\u060c \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0645\u0627\u0646\u0646\u062f <strong data-start=\"5255\" data-end=\"5277\">SLACK_EVENTS_TOKEN<\/strong> \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a <strong data-start=\"5331\" data-end=\"5354\">Event Subscriptions<\/strong> \u0631\u0627 \u062f\u0631 \u067e\u0646\u0644 Slack \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0639\u0645\u0644\u06a9\u0631\u062f \u06a9\u0627\u0645\u0644 \u0631\u0628\u0627\u062a \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"2814\" data-end=\"2817\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"18q7tlk\" data-start=\"0\" data-end=\"48\">\u0645\u0631\u062d\u0644\u0647 \u0634\u0634\u0645 \u2014 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u0627\u062a\u0635\u0627\u0644 Slack \u0628\u0647 \u0631\u0628\u0627\u062a<\/h1>\n<p data-start=\"50\" data-end=\"171\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0622\u062e\u0631\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u0647 \u0648 Slack \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0631\u0628\u0627\u062a \u0628\u062a\u0648\u0627\u0646\u062f \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u067e\u0631\u062f\u0627\u0632\u0634 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"173\" data-end=\"298\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0647\u0631 \u0632\u0645\u0627\u0646 \u0639\u0628\u0627\u0631\u062a \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c CoinBot \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u062f.<\/p>\n<hr data-start=\"300\" data-end=\"303\" \/>\n<h1 data-section-id=\"125x1bx\" data-start=\"305\" data-end=\"328\">\u062f\u0631\u06cc\u0627\u0641\u062a Signing Secret<\/h1>\n<p data-start=\"330\" data-end=\"442\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 Slack \u0628\u062a\u0648\u0627\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u06a9\u0646\u062f\u060c \u0628\u0627\u06cc\u062f <strong data-start=\"401\" data-end=\"419\">Signing Secret<\/strong> \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"444\" data-end=\"552\">\u062f\u0631 \u067e\u0646\u0644 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 Slack \u0648\u0627\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0627\u06cc \u0634\u0648\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0645\u0631\u0627\u062d\u0644 \u0642\u0628\u0644 \u0633\u0627\u062e\u062a\u06cc\u062f \u0648 \u0627\u0632 \u0645\u0646\u0648\u06cc \u0633\u0645\u062a \u0686\u067e \u0645\u0633\u06cc\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Basic Information<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"585\" data-end=\"667\">\u062f\u0631 \u0628\u062e\u0634 <strong data-start=\"592\" data-end=\"611\">App Credentials<\/strong> \u06af\u0632\u06cc\u0646\u0647\u200c\u0627\u06cc \u0628\u0627 \u0639\u0646\u0648\u0627\u0646 <strong data-start=\"630\" data-end=\"648\">Signing Secret<\/strong> \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p data-start=\"669\" data-end=\"690\">\u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"692\" data-end=\"695\" \/>\n<h1 data-section-id=\"casdn0\" data-start=\"697\" data-end=\"716\">\u062a\u0646\u0638\u06cc\u0645 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc<\/h1>\n<p data-start=\"718\" data-end=\"773\">\u0627\u06a9\u0646\u0648\u0646 Signing Secret \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">export<\/span> <span class=\"\u037c11\">SLACK_EVENTS_TOKEN<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037cz\">\"YOUR_SIGNING_SECRET\"<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"836\" data-end=\"919\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b \u0645\u062a\u063a\u06cc\u0631 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Bot Token \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0622\u0646 \u0631\u0627 \u0646\u06cc\u0632 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cv\">export<\/span> <span class=\"\u037c11\">SLACK_TOKEN<\/span><span class=\"\u037cv\">=<\/span><span class=\"\u037cz\">\"YOUR_BOT_TOKEN\"<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"970\" data-end=\"998\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u062b\u0628\u062a \u0645\u062a\u063a\u06cc\u0631\u0647\u0627:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">echo<\/span> <span class=\"\u037c11\">$SLACK_EVENTS_TOKEN<\/span>\r\n<span class=\"\u037c10\">echo<\/span> <span class=\"\u037c11\">$SLACK_TOKEN<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1056\" data-end=\"1059\" \/>\n<h1 data-section-id=\"1i79al\" data-start=\"1061\" data-end=\"1075\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"1077\" data-end=\"1116\">\u0627\u0628\u062a\u062f\u0627 Virtual Environment \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">source<\/span> ~\/.venvs\/slackbot\/bin\/activate<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1169\" data-end=\"1193\">\u0633\u067e\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>python3 app.py<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1223\" data-end=\"1273\">\u0627\u06af\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code> * Serving Flask app \"app\"\r\n * Running on http:\/\/0.0.0.0:3000<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1349\" data-end=\"1446\">\u067e\u06cc\u0627\u0645 \u0632\u06cc\u0631 \u0646\u06cc\u0632 \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a \u0648 \u0635\u0631\u0641\u0627\u064b \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u0633\u0631\u0648\u0631 \u062f\u0627\u062e\u0644\u06cc Flask \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 Production \u0645\u0646\u0627\u0633\u0628 \u0646\u06cc\u0633\u062a.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>WARNING: This is a development server.\r\nDo not use it in a production deployment.<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1542\" data-end=\"1621\">\u062f\u0631 \u0628\u062e\u0634 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0645\u0642\u0627\u0644\u0647 \u0631\u0648\u0634 \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"1623\" data-end=\"1626\" \/>\n<h1 data-section-id=\"3bwroa\" data-start=\"1628\" data-end=\"1648\">\u0628\u0631\u0631\u0633\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"1650\" data-end=\"1696\">\u062f\u0631 \u06cc\u06a9 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062c\u062f\u06cc\u062f \u0648\u0636\u0639\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">curl<\/span> http:\/\/YOUR_SERVER_IP:3000\/slack\/events<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1756\" data-end=\"1821\">\u0627\u06af\u0631 \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f\u06cc\u062f\u060c \u06cc\u0639\u0646\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>These are not the slackbots you're looking for.<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1884\" data-end=\"1887\" \/>\n<h1 data-section-id=\"m7638j\" data-start=\"1889\" data-end=\"1919\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 Event Subscription<\/h1>\n<p data-start=\"1921\" data-end=\"1991\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u0628\u0647 Slack \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"1993\" data-end=\"2026\">\u0627\u0632 \u0645\u0646\u0648\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0627\u0631\u062f \u0628\u062e\u0634 \u0632\u06cc\u0631 \u0634\u0648\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Event Subscriptions<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2061\" data-end=\"2098\">\u06af\u0632\u06cc\u0646\u0647 <strong data-start=\"2067\" data-end=\"2084\">Enable Events<\/strong> \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"2100\" data-end=\"2103\" \/>\n<h1 data-section-id=\"8bxp03\" data-start=\"2105\" data-end=\"2128\">\u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0622\u062f\u0631\u0633 \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"2130\" data-end=\"2176\">\u062f\u0631 \u0642\u0633\u0645\u062a <strong data-start=\"2138\" data-end=\"2153\">Request URL<\/strong> \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>http:\/\/YOUR_SERVER_IP:3000\/slack\/events<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2231\" data-end=\"2260\">\u0627\u06af\u0631 \u0627\u0632 \u062f\u0627\u0645\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>https:\/\/bot.example.com\/slack\/events<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2312\" data-end=\"2358\">\u067e\u0633 \u0627\u0632 \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647\u060c Slack \u0627\u0631\u062a\u0628\u0627\u0637 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"2360\" data-end=\"2437\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u0646\u060c \u06a9\u0646\u0627\u0631 \u0622\u062f\u0631\u0633 \u0639\u0628\u0627\u0631\u062a <strong data-start=\"2395\" data-end=\"2407\">Verified<\/strong> \u0628\u0627 \u0631\u0646\u06af \u0633\u0628\u0632 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<hr data-start=\"2439\" data-end=\"2442\" \/>\n<h1 data-section-id=\"1hwinj6\" data-start=\"2444\" data-end=\"2470\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u067e\u06cc\u0627\u0645\u200c\u0647\u0627<\/h1>\n<p data-start=\"2472\" data-end=\"2531\">\u06a9\u0645\u06cc \u067e\u0627\u06cc\u06cc\u0646\u200c\u062a\u0631\u060c \u0642\u0633\u0645\u062a <strong data-start=\"2491\" data-end=\"2518\">Subscribe to Bot Events<\/strong> \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"2533\" data-end=\"2592\">\u0631\u0648\u06cc <strong data-start=\"2537\" data-end=\"2554\">Add Bot Event<\/strong> \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f\u0647 \u0648 \u0631\u0648\u06cc\u062f\u0627\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>message.channels<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2624\" data-end=\"2712\">\u0627\u06cc\u0646 \u0645\u062c\u0648\u0632 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0631\u0628\u0627\u062a \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644\u200c\u0634\u062f\u0647 \u062f\u0631 \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0639\u0636\u0648 \u0622\u0646\u200c\u0647\u0627\u0633\u062a \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u062f.<\/p>\n<p data-start=\"2714\" data-end=\"2749\">\u0633\u067e\u0633 \u0631\u0648\u06cc <strong data-start=\"2722\" data-end=\"2738\">Save Changes<\/strong> \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"2751\" data-end=\"2754\" \/>\n<h1 data-section-id=\"b263ke\" data-start=\"2756\" data-end=\"2773\">\u0646\u0635\u0628 \u0645\u062c\u062f\u062f \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"2775\" data-end=\"2850\">\u0628\u0639\u062f \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 Permission\u0647\u0627\u060c Slack \u0627\u0632 \u0634\u0645\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"2852\" data-end=\"2875\">\u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9 \u0632\u06cc\u0631 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Reinstall your app<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2909\" data-end=\"2959\">\u0633\u067e\u0633 \u062f\u0631 \u0635\u0641\u062d\u0647 \u062a\u0623\u06cc\u06cc\u062f\u060c \u06af\u0632\u06cc\u0646\u0647 <strong data-start=\"2934\" data-end=\"2943\">Allow<\/strong> \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"2961\" data-end=\"2964\" \/>\n<h1 data-section-id=\"1vppph4\" data-start=\"2966\" data-end=\"2979\">\u0622\u0632\u0645\u0627\u06cc\u0634 \u0631\u0628\u0627\u062a<\/h1>\n<p data-start=\"2981\" data-end=\"3041\">\u0627\u06a9\u0646\u0648\u0646 \u0648\u0627\u0631\u062f \u0647\u0645\u0627\u0646 \u06a9\u0627\u0646\u0627\u0644\u06cc \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0631\u0628\u0627\u062a \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f.<\/p>\n<p data-start=\"3043\" data-end=\"3066\">\u067e\u06cc\u0627\u0645 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Hey Sammy, Flip a coin<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3104\" data-end=\"3155\">\u0686\u0646\u062f \u0644\u062d\u0638\u0647 \u0628\u0639\u062f\u060c \u0631\u0628\u0627\u062a \u067e\u0627\u0633\u062e\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>\u062f\u0631 \u062d\u0627\u0644 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647...\r\n\r\n\u0646\u062a\u06cc\u062c\u0647: \u0634\u06cc\u0631 \ud83e\udd81<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3205\" data-end=\"3207\">\u06cc\u0627<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>\u062f\u0631 \u062d\u0627\u0644 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647...\r\n\r\n\u0646\u062a\u06cc\u062c\u0647: \u062e\u0637 \ud83e\ude99<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3256\" data-end=\"3259\" \/>\n<h1 data-section-id=\"1cz8232\" data-start=\"3261\" data-end=\"3281\">\u0627\u06af\u0631 \u0631\u0628\u0627\u062a \u067e\u0627\u0633\u062e \u0646\u062f\u0627\u062f<\/h1>\n<p data-start=\"3283\" data-end=\"3307\">\u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<h3 data-section-id=\"3zd0o5\" data-start=\"3309\" data-end=\"3336\">\u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0627\u0634\u062f<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>python3 app.py<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3366\" data-end=\"3369\" \/>\n<h3 data-section-id=\"lkmeni\" data-start=\"3371\" data-end=\"3405\">\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u0646\u062f<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">echo<\/span> <span class=\"\u037c11\">$SLACK_TOKEN<\/span>\r\n\r\n<span class=\"\u037c10\">echo<\/span> <span class=\"\u037c11\">$SLACK_EVENTS_TOKEN<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3464\" data-end=\"3467\" \/>\n<h3 data-section-id=\"9ixtze\" data-start=\"3469\" data-end=\"3492\">\u0631\u0628\u0627\u062a \u0639\u0636\u0648 \u06a9\u0627\u0646\u0627\u0644 \u0628\u0627\u0634\u062f<\/h3>\n<p data-start=\"3494\" data-end=\"3526\">\u062f\u0631 Slack \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>\/invite @CoinBot<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3558\" data-end=\"3602\">\u06cc\u0627 \u0627\u0632 \u0628\u062e\u0634 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u06a9\u0627\u0646\u0627\u0644\u060c \u0631\u0628\u0627\u062a \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"3604\" data-end=\"3607\" \/>\n<h3 data-section-id=\"1senejs\" data-start=\"3609\" data-end=\"3640\">\u0622\u062f\u0631\u0633 Request URL \u0645\u0639\u062a\u0628\u0631 \u0628\u0627\u0634\u062f<\/h3>\n<p data-start=\"3642\" data-end=\"3735\">\u0627\u06af\u0631 \u06a9\u0646\u0627\u0631 \u0622\u062f\u0631\u0633\u060c \u062a\u06cc\u06a9 \u0633\u0628\u0632 <strong data-start=\"3665\" data-end=\"3677\">Verified<\/strong> \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<ul data-start=\"3737\" data-end=\"3857\">\n<li data-section-id=\"6tpbwl\" data-start=\"3737\" data-end=\"3760\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0631\u0627 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"p2sbuo\" data-start=\"3761\" data-end=\"3782\">\u067e\u0648\u0631\u062a 3000 \u0628\u0633\u062a\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"1jnfr6d\" data-start=\"3783\" data-end=\"3822\">\u0622\u062f\u0631\u0633 IP \u06cc\u0627 \u062f\u0627\u0645\u0646\u0647 \u0627\u0634\u062a\u0628\u0627\u0647 \u0648\u0627\u0631\u062f \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"40nzor\" data-start=\"3823\" data-end=\"3857\">\u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0627\u062a\u0635\u0627\u0644 \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<hr data-start=\"3859\" data-end=\"3862\" \/>\n<h1 data-section-id=\"1denskj\" data-start=\"3864\" data-end=\"3897\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production<\/h1>\n<p data-start=\"3899\" data-end=\"3941\">\u0633\u0631\u0648\u0631 \u062f\u0627\u062e\u0644\u06cc Flask \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a.<\/p>\n<p data-start=\"3943\" data-end=\"4023\">\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0648\u0627\u0642\u0639\u06cc \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<ul data-start=\"4025\" data-end=\"4094\">\n<li data-section-id=\"1k3cn1e\" data-start=\"4025\" data-end=\"4056\">Gunicorn + Nginx (\u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u0634\u062f\u0647)<\/li>\n<li data-section-id=\"1w9xmq2\" data-start=\"4057\" data-end=\"4072\">uWSGI + Nginx<\/li>\n<li data-section-id=\"1u6gra4\" data-start=\"4073\" data-end=\"4081\">Docker<\/li>\n<li data-section-id=\"1hb2fca\" data-start=\"4082\" data-end=\"4094\">Kubernetes<\/li>\n<\/ul>\n<p data-start=\"4096\" data-end=\"4278\">\u0627\u06af\u0631 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u062f \u0631\u0628\u0627\u062a \u0631\u0627 \u0631\u0648\u06cc <strong data-start=\"4122\" data-end=\"4138\">Parmin Cloud<\/strong> \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0632 <strong data-start=\"4168\" data-end=\"4180\">Gunicorn<\/strong> \u062f\u0631 \u06a9\u0646\u0627\u0631 <strong data-start=\"4189\" data-end=\"4198\">Nginx<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u0645\u0646\u06cc\u062a \u0628\u06cc\u0634\u062a\u0631\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0648 \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0628\u0627\u0644\u0627\u062a\u0631\u06cc \u0646\u06cc\u0632 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<hr data-start=\"4280\" data-end=\"4283\" \/>\n<h1 data-section-id=\"qpvq47\" data-start=\"4285\" data-end=\"4295\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h1>\n<p data-start=\"4297\" data-end=\"4324\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u062f \u06a9\u0647:<\/p>\n<ul data-start=\"4326\" data-end=\"4587\">\n<li data-section-id=\"121iht8\" data-start=\"4326\" data-end=\"4355\">\u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Slack \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"q5vzoe\" data-start=\"4356\" data-end=\"4395\">\u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0628\u0627\u062a \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"v8hzj8\" data-start=\"4396\" data-end=\"4446\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Python \u0648 Flask \u06cc\u06a9 Slackbot \u0628\u0633\u0627\u0632\u06cc\u062f.<\/li>\n<li data-section-id=\"1p38p7u\" data-start=\"4447\" data-end=\"4480\">\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc Slack \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"rsfu92\" data-start=\"4481\" data-end=\"4513\">\u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"p7lm26\" data-start=\"4514\" data-end=\"4587\">\u062f\u0631 \u067e\u0627\u0633\u062e \u0628\u0647 \u06cc\u06a9 \u0639\u0628\u0627\u0631\u062a \u0645\u0634\u062e\u0635\u060c \u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u062a\u0627\u0628 \u0633\u06a9\u0647 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p data-start=\"4589\" data-end=\"4801\" data-is-last-node=\"\" data-is-only-node=\"\">\u0627\u0632 \u0627\u06cc\u0646 \u0646\u0642\u0637\u0647 \u0628\u0647 \u0628\u0639\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0646\u0637\u0642 CoinBot \u0631\u0627 \u0628\u0647 \u0647\u0631 \u0642\u0627\u0628\u0644\u06cc\u062a\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u06af\u0633\u062a\u0631\u0634 \u062f\u0647\u06cc\u062f\u061b \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u0627\u0639\u0644\u0627\u0646\u200c\u0647\u0627\u06cc \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062e\u0648\u062f\u06a9\u0627\u0631\u060c \u067e\u0627\u0633\u062e\u200c\u06af\u0648\u06cc\u06cc \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06cc\u0627 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641.<\/p>\n<\/div>\n<\/div>\n<p data-start=\"4589\" data-end=\"4801\" data-is-last-node=\"\" data-is-only-node=\"\">\u0627\u0632 \u0647\u0645\u0631\u0627\u0647\u06cc \u0634\u0645\u0627 \u0628\u0627 <strong><a href=\"https:\/\/parmin.cloud\/\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/a><\/strong> \u0633\u067e\u0627\u0633\u06af\u0632\u0627\u0631\u06cc\u0645.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 Slack \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645\u200c\u0647\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0628\u0631\u0627\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627 \u0648 \u0633\u0627\u0632\u0645\u0627\u0646\u200c\u0647\u0627 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645\u060c \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u0648 \u062e\u0635\u0648\u0635\u06cc\u060c \u062a\u0645\u0627\u0633 \u0635\u0648\u062a\u06cc \u0648 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0631\u0628\u0627\u062a\u200c\u0647\u0627 (Bot) \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0631\u0628\u0627\u062a\u200c\u0647\u0627\u06cc Slack \u06cc\u0627 Slackbot \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0646\u062f\u061b \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0648 [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":6666,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[258,343,131,215],"tags":[1807,1815,1817,1821,1814,1676,1819,1811,1822,1638,1823,1813,1812,1820,1808,1809,1816,1810,1824,1818],"class_list":["post-6665","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ubuntu","category-python","category-131","category-server","tag-python-automation","tag-python-slack-sdk","tag-slack-bot-python","tag-slack-events-api","tag-webhook--slack","tag--devops","tag--flask","tag--python--","tag--slack-api","tag--ubuntu-24-04","tag----slack","tag--slack","tag---api","tag-1820","tag-1808","tag-1809","tag---slack","tag--chatbot","tag--slack-bot--python","tag----flask"],"aioseo_notices":[],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=6665"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6665\/revisions"}],"predecessor-version":[{"id":6667,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6665\/revisions\/6667"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/6666"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=6665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=6665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=6665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}