Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал: https://er.chdtu.edu.ua/handle/ChSTU/9168
Назва: Програмна реалізація телеграм-боту магазину рибальських товарів з можливістю адміністрування
Автори: Первунінський, Станіслав Михайлович
Золотоверхий, Андрій Ярославович
Дата публікації: 17-чер-2023
Короткий огляд (реферат): АНОТАЦІЯ Золотоверхий Л.Я. студент спеціальності 121 Інженерія програмного забезпечення. тема роботи " Програмна реалізація телеграм-боту магазину рибальських товарів з можливістю адміністрування". Робота представлена в Черкаському Державному Технологічному Університеті у місті Черкаси у 2023 pou1. В бакалаврській роботі розроблено архітектуру програмного забезпечення, включаючи модуль телеграм-боту та панель адміністрування . Це дозволяє ефективно керувати магазином рибальських товарів через Telegram та забезпечує зручність використання для користувачів. Реалізована можливість замовлення товарів з магазину через телеграм-бот. Користувачі можуть переглядати каталог товарів, додавати їх до кошика та оформляти замовлення зручним способом. Розроблена панель адміністрування, яка надає можливість управління товарами, замовленнями та іншими параметрами магазину. Адміністратор може додавати, редагувати та видаляти товари, відстежувати статуси замовлень та забезпечувати ефективне функціонування магазину. Розроблено програмне забезпечення для телеграм-боту магазину рибальських товарів з можливістю адміністрування, яке дозволяє здійснювати продажі рибальського спорядження через месенджер Telegram. Результати роботи показують, що реалізовані функціональні можливості забезпечують зручну та ефективну роботу магазину, спрощують процес замовлення та оплати товарів для користувачів. Ця робота має практичне значення для розширення можливостей електронної комерції та полегшення процесу покупок рибальських товарів.
ANNOTATION Zolotoverkhy Andrii Yaroslavovich. student of specialty 121 Software Engineering. Conducted a stady on the topic " Programmatic Implementation of a Telegram Bot for a Fishing Gear Administration Capabilities". The research was presented at the Cherkasy State Technological University in Cherkasy? Ukraine, in 2023. The bachelor's thesis focused on developing, the software architecture which, including a Telegram bot module and an administration panel. This allows for efficient management of the fishing gear store through the Telegram platform, providing convenience for users. The implemented features enabled users to place order for products from the store through the Telegram. Users could browse the product catalog, add items to their cart, and easily complete the ordering process. An administration panel was also developed, providing functionality to manage products, orders and other store parameters. Administrators could add, and delete products,, monitor order statuses and ensure the smooth operation of the store. The developed software for the Telegram bot of the fishing gear store with administration capabilities demonstrated its effectiveness in facilitating the sale of fishing equipment through the Telegram messenger. The results highlighted the convenient and efficiency provided to users in the ordering and payment processes. This work has practical implications expanding the possibilities of e-commerce and enhancing the overall purchasing experience in the fishing gear.
URI (Уніфікований ідентифікатор ресурсу): https://er.chdtu.edu.ua/handle/ChSTU/9168
Розташовується у зібраннях:121 Інженерія програмного забезпечення (Інженерія програмного забезпечення)

Файли цього матеріалу:
Файл Опис РозмірФормат 
Кваліфікаційна робота бакалавра Золотоверхий Андрій Ярославович.pdf
  Restricted Access
9.54 MBAdobe PDFПереглянути/Відкрити    Запит копії


Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.

Extracted text
..... 
- - ------- - --
\\t\1H. 1\~РLПН>ОСІ\1111111 УІСІІУІ(І)Л)ІІJІ 
Ч\ Р~ \t 1)\,1 \\\ }l\~P)l " \НІ 11 Іf'І П ХІ IUJIOI Jtll 11 ti't УІ ІІВІ РС 1111 І 
Ф,,\\.\ \Ь1~1 інформш1іn1шх ІСХІІО1ІОІ ЇІі Ї СІІСІСМ 
К,,фс \ра пр'-,,·ра~11юrо забе:111счс11ю1 .штомп п11uшш11х сис·гем 
ПОЯСНlОВЛЛЬІ lA ЗЛПІІСКА 
до кваліфікаційної роботи 
«бакалавра» 
освітній рівень 
на те,1у: Програм:на реалізація телеграм-боту магазину рибальських товарів 
з можливістю адміністрування 
Вm<онав: студент 4 курсу. групи ПЗ-1904 
Спеціальності 
121 «Інженерія програмного забезпечення» 
(ш11фр і назва напряму шдrотов~.:11) 
Студент Золотоверхий А. Я. 
(прізвнще та ініціатt) 
Керівник Первунінсьюш С. М. 
(прізвище та ініціа.!111) 
Рецензент Вернигора А. В. 
(прізвнще та ініціа,111) 
JЛ1 IJEI) 
'За С, п сор 
І 
ЗАВДАННЯ 
НА КВАЛІФІКАЦІЙНУ РОБОТУ СfУДЕНТУ 
Золотоверхий Андрій Ярославович 
(np111111we. ,,.. •• по баnхоа1) 
Тему проепу (роботи}Програмна реалізація тerierpa\1-бon· магазину р11бальсьск11х товар,в з 
ІfОZЩІВЇСТІО а,;ІМі11істр-. 8АННJІ 
ІСері8вих npoeny (роботи) Первунінський Станіслав Михайлович д.т.н., професор 
(ПрІJ8ИЩС, ІN'І, ПО бат1.11оа1, Іtа)ХОІМА СТ)'ПІНІ., аченс )aaнtu) 
з....,.а-ені наuзом Черкаського державного технолоrічного університету від 4< 24 » nютоrо 
року №43/04 
~оuвв, ,:J}'АСІІТОм проепу (роботи) 9.а....:ч.:.ер~.<.:в::.:.н:.:::я~2:.::О:.::2:.:2~р""',-----------
. даві ао ороепу (роботи) стано@РD! програмного забезпеченн,: процеси управліннв: 
'аковвх рабат npoeІC"ry), 
,-.'su ■8'--- N І1ООМІІ L--;:::-=:=;;;~=t,.~~~~~ 
nІІП"І 
)fna ....- мв 19 Q»DI 2022 Р. -
К ЕНДАРНИЙ ПЛАН 
Строк 
ВИХОН8ННJІ 
етапів ПрииіТJоr 
виnусJСИої 
роботи 
05.12.2022 виховано 
13.12.2022 ВИJСОИано 
16.12.2022 виконано 
17.01 .2023 
Оа:•вmuїа виконано 
1 Підбір мuq,;ama 
Авuі., ІВІІ8Ш аврішева пос:таапеяоі задачі 02.02.2023 
2 виконано 
з ~освоавп oapaa,e'JJ)iв роботи 27.02.2023 виховано 
Ва6ір ~ Dроежтяоrо рішенш 09.03.2023 
4 upia,ny виховано 
5 ~пераісяої ~ роботи 17.03.2023 виконано 
28.03.2023 
виконано 
l Y~wa .IJJ)ll&eau DJIOeatlUQ: риuсвь з 
10.05.2023 
виконано 
19.05.2023 
впоиаио 
22.os.2023 
ВВkоваво 
29.os.2023 
ОJ.Об~ 
ІІОТ ЦНІ 
Золотоверхий Л. Я .. с,) дс"т с11сціал 1)11ос, і 121 J1 1жс11срія проr р fJf 
забезпечення. тема робо1 и " І І ро, рам,~а реалі шція reлcr р(.1м-боrу tJr шн 
рибальських товарів з можл11віс1ю ад~tі11іс1руваш1я". Робота прсдсrав 1ен 
Черкаському Державному Технологічному Університеті у місті Черкаси у 2023 
pou1. 
В бакалаврській роботі ро1роблено архітектуру програмного забезпечення, 
включаючи модуль телеграм-боту та 11анель адміністрування . Це дозво,1яє 
ефективно керувати магазином рибальських товарів через Telegram та забезпеч}f 
зручність використання для користувачів . 
Реалізована можливість замовлення товарів з магазину через телеграм-бот. 
Користувачі можуть переглядати каталог товарів, додавати їх до кошика та 
замовлення зручним способом. 
панель адм1юстрування, яка надає можлив1сть ) правшння 
~еннями та іншими параметрами магазину. Адміністратор може 
та видаляти товари, вщстежувати статуси замовлень та 
не функціонування магазину. 
забезпечення для телеграм-боту маrn1нн) 
ивістю адміністрування, яке дозволяє здійснювати 
еиия через месенджер Telegram. Результати 
функціональні можливості забезпечують 
, спрощують процес замовлення та оплати 
є практичне значення для розширення 
ення процесу покупок р 
А О'ТЛТІО 
Zolotove1·khyi Апd,·іі УагоsІ з \'О\1 іс І1 ., а studc,н special izir1g in 12 І Softwur 
Engineering, conducted а study оп tІн.: tupic "Pгogr·шnin a tic Jmplcmer1tation or u 
Telegram Bot for а Fishing Gеаг Store \via1 Лdmiпi stration Capabi litics." 'Гhе rcscarch 
\vas presented at Cherkasy State Tecl111ological Uni\•crsity in Chcrkasy, Ukrainc, in 
2023. 
The bachelor's thesis focused оп developing the software architecture, which 
included а Telegram bot module and an ad111inistration panel. This allov.•ed for effїcieлt 
management of the fishing gear store through the Telegram platform, providiлg 
convenience for users. 
The implemented features enabled users to place orders for products from the 
store through the Telegram bot. Users could bro\vse the product catalog, add items to 
their cart, and easily complete the ordering process. 
An administration panel was also deYeloped, providing functionality to manage 
products, orders, and other store parameters. Administrators could add, edit, and delete 
products, monitor order statuses, and ensure the smooth operation of the store. 
Тhе developed software for the Telegratn bot of the fishing gear store with 
·on capabilities demonstrated its effectiveness in facilitating the sale of 
ent through the Telegram messenger. The results highlighted the 
efficiency provided to users in the ordering and payment processes. 
implications for expanding the possibilities of e-comme1·ce and 
urchasing experience in the fishing gear. 
ІіСІІІІ 
І fOJ8 ІІІАНІUІ nост,..,• • них JAUA&, ............ ,.. . . 
1' Olllil8f-••: .,■ 1-•t11• ?І •• і  ....- .І npll po,pa&d ................. " .................................... .. 
..._ _,. .•  ••••ь•••••••'• •······. ....., ... .........................., ... ...... .,. ......................, ... .......... _.... .... _•  
oro 3А&Е3ПЕЧЕИНJІ СИСІ'DОІ-,-·----..- ·_ ,._,- --•2 
J.І•---ІІ'ІІ--■-ІD80fІ01,.._.п. 
2.1.1 JIJ І ---••111.1 МО8А 
c::c•-i11.1 ...,. .1.1 11. o11n■m ..................... - ...................- -12 
Z.1.2& awwм:■a 1ш. . •••••. .~ . 14 
22..U2RE:І•.•.- -- "---••еч■• . • ... 17 
18 
1.2.1• J f ....•  ІІJІСІІ'РІМііОі JlбelnC'ICH118 •• ... ...............· --·~-•• 
2.2.U IIDIEIJ1188P8ii і ..... .....,. 
11 
Z2  U В rrw wmzsa а роJреІ&іиа. Фунаuонuа.н1 та нсфункц1онаm.н1 ІИмоrи • ... ........, _,, 
Ш,81115 ................. АІU"рІМИПрецf.ІІеНТІІ 20 
JI .....C lpyn,pll nporpuuюro ІСОМІUІаеу ...23 
..... ., ..........., . .... .23 
З РОЗРОБhА ТА ТЕСТУВАННЯ ПІ'ОІ 1> \\ІІІОГО зл I;Е:нн~ч1 :11ня ..................... ;\4 
3.1 Розробка програмного комллсксу .. . .................................. .. , ,,, .... , ... ,., ...... , •• • • • • • . 3'1 
3. 1.1 Обrрунтування в11бору засобів рсалі"Jації ......................................... ....... ••  • • ••  .... 34 
3.1 .2 Оnнс сrру1,.тур1•ої (фу11кціональної) с,.:,111 ............................................ •· •· •·· .... 36 
3.1 .3 Опис логі•1ної схеми снстем~, ...................... .. .............................................. 38 
3.1.4 Розробка б:~з11 д.u111х ..... .. .... .. ........................................................... .... ... .....4 0 
3.1.5 Ро"Jробка ін 1ерфсіісу кор11стува•1а ........ . ............................................4 2 
3.1.6 О1111с розробнсн11х модулів 1 а їх 111'юю1 з і1111111м11 a-or.111011c111·nм11 rозробю1 ........ • • • .. .46 
J .2 Tec·1yuni111я с11с1еt.н1 ............................................. .........................................4 8 
3.2.1 Модул1,1іс тестува1111я. .... . .. ..... . ....... ..... . ................................................ 4К 
3.2.2 l111с1·рацііі11с ·1сс1ука11н>1 .................................................................................................... 53 
З.2.J C11c1ci\1111: 1 ·сс 1 уuан11я .................................................................................. 54 
3.2.4 І І r11іімш11,111; ' ІСС'І)'ІІПІІІІЯ .............................................................................. 57 
3.3 І Ір11 юн11111 n11rюв.1 ~1жс1ю1·0 nporrnм11oro Nомnлсксу .......................................... •. ... 59 
ВІ ІСІ ІОВІСИ .... ........ .... ................. .......................................... ..................... . . 61 
СІІІІСОК ОІІІСОРІІ С'І'Л І І ІІ Х ДЖ'ЕРЕЛ ................ ............ . .... ....................... ..... 64 
)(()JtЛ ' І ' ІС 11 ..... .. ..................................................................... .... .......................... 66 
чдn'.-31911 .ооз пз 
ПЕРЕЛІК УМОВНИХ СКОРОЧЕНЬ 
UML уніфікована мова моделювання 
МУС Архітектурний шаблон 
ооп об' єктно орієнтоване програмування 
БД База даних 
СУБ)\ Система управління базами даних 
ЛРІ інтерфейс програмного забезпечення (application 
peog1·am1ning intei-face) 
'l}t І \ ' \І') 1 7 (}() \ 11 t 
ІН 1~ 11 
/\1'І~П.Н,ІІЇ\'ІІ, ('\Щ, В С)'\11'.:ІІІІХ )MtHІilX t: ICkfJJUIIII І f((I І рІІІR flt 
розвнває-тьс-я r~ 'Jtl\fM('\L ucc GіЛЬШ) чос І ку l)ltllkY. У 111'я н-:у І Іllf І ШltШkll' JI 
в звто:-.ш111ззнії біз11r~•11ро11сс111 та п~д1111шс1111і сфскнш11осп ІНJ(ІWО.JІІ 1 
к.1ієнтамн. Про111а,ша рсаліззнія телсгр:.1~1-боrу маr,аз1шу р11Gш11,с1,кнх rов р1в 1 
можшІБістю а;1,мініструвз11ня ~,ас ш.1 ~1с ·1 і створ11п1 1ручш1f1 ru шrтдкш, 
інстр~ мент для здійснення продажів рибальського спорядження. Порівняно 1 
траrrиційнимн \1етодами продажів, використання чат-боту дозволить 1НJЧНО 
зменшити витрати на утримання магазину та підвищити рівень обслуговування 
клієнтів. Такий продукт має великий потенціал для розвитку та може бути 
використаний) різних сферах бізнесу, що робить дану тему дуже аh.їуальною. 
Метою роботи є програмна реал1зац1я телегра~1-боту магазину 
рибальських товарів з можливістю адміністрування, яке дозволить здійснювати 
продажі рибальського спорядження через месенджер Teleg1·am. Для досягнення 
поставленої мети необхідно вирішити наступні завдання : 
- розробити архітектуру програмного забезпеqення для теле~ ра\1-бо 1")' та 
панелі адміністрування; 
реалізувати можливість замовлення товарів з магазину чср~~ 1e~1erpa~1-
бот; 
розробити панель адміністрування для ) правлшня ~оварамн. 
замовленнями та іншими параметрами магазину; 
перевірити та протестувати розроблене програмне забе3печслня на 
різних етапах його створення для забезпечення коректної та безпечної роботн; 
Об'єктом розробки даної бакалаврської роботи с процес нрод,\)К) 
рибальського спорядження в магазинах. Процес продажу рнбальськпх товарів 
має свої особливості, зокрема, потребус наявності широкого асортнменту 
товарів, можливості швидкої та зручної доставки, а також управшння 
замовленнями та іншими параметрами магазину. З метою полшшення 
ефективності продажу рибальських товарів та зручності для покупців, об'єктом 
розробки є програмне забезпечення телеграм-боту з панеллю адміністрування на 
s 
-~,~ ,\~нн~,·чш рнбшн,'-'''""' Н"'-Ч'і111\, О1.•1ющ111 у111н 11 у ;11111ііі p11fioi 1 
щ."'11\\ОН~ 1.'1 ,,~\\ на р1.)ЧЮ\.Н,~ щ,1.,1 р,ІІ\ІІЮІ \) 1;161.•·111с111.•111111, Щ\) / \t111111111111, ~.:1\н.:1, 111111111 
дііkюон., п, про '\,\)\,і рнбt111t,с1,1,;1.)І \) 1.•11щ,1Р\'1.;1.•11нн чс~к• 1 М\'1.'1.•11ю1<1.·р ' І\•Ісg1 ·11111 , 
~· 1 \~ші,1 роботі !ІН~Н)J\Н \НН\Юбt.:t\ н1,Jllt''H\lt'11, 11 сс(н.: 11111(op11L 1111111н мо1111 
програм) ВЗНН}і Т) pcSc1·ipt Щ1)\ І.'' 1'\\О\)С\11\SІ 11\ЮІ рнм, ЮІ О ·шl1t:' ІІlІ:ЧІ:ІІІ ІІІ JUBI 
телеграм-бо r~ ·J ш,нслJно ,\ І\Мінk 1р ушннщ 1н1 ' І СІ\ІУ 11 м11п111111 р1160111,с1,1< 11х 
rовзріn" · ГypeScl'ipt Є nотужннм \t\ \І\ЩЧЖО \\ІІІ'.О\)\ІС'І 'ОІ\УВ[ІІІІІМ ІІІС'І румс11том ДJІSІ 
створення веб1.01.зткіn т~, програм1ю1·0 зnбс тсчс111111 д1111 р1 шомш1і 11111х 
платформ. Внкорп.стання ціс't I\IOBll прогрnМ) вt11111я дозво1111с стоорюва·, и 
д,шамічні та інтсра1'.-тнвні інтерфеіісн для кор11стувnчів, .1.  також ·шбсз11ечус 
внсоку ш1шдюсть та продуктивність nporpat.ш. 
Оnнс отр11ма1111~ реузльтатів. В даній роботі б)ЛО розроблено програмне 
забезпечення телеграм-боту з панеллю адl\tі11іструва11ня для магазину 
р11бальськ11~ то13арів з 1311кор11ст::1.11ням мовн програмування TypeScгipL. 
Прак-т1,чне значення отршшн111х результатів, застосування 
розробленого програмного забезпечення дозвол11ть зменw11т11 LJac, яю1й потрібен 
!\ЛЯ обробкн замовлень, підвпщнтп точність та шондкість обробки замовлень, а 
також забсзпеч11т11 зручність та комфорт для кліснтів магаз11ну. Отримані 
рс'3ульт..~тн готові до внкористання в роботі магазнну рибальських товарів. 
Особнстніі в11ссо-.. автора. У результаті розробк11 цього телеграм-бота 
відбулося значне удосконалення процесу продажу рибальських товарів на 
території краї11 11 . Бот надас можл11вість кліснтам швндко та зру•1но здііІснювати 
покупки без необхідності відвідуватп фізичний магазин. Крім того, завдяки 
Qристанню інноваційних технологій ) процесі роботи телеграм-бота, клієнти 
ть максимально точну та актуальну інформацію про наявність товару, 
, ..а ,.,.... ..1р истики та цінн. 
б 
Ч)\J' ' .. 1917.001 ll'J 
t 1СН) \()Ч\ і\1ЕТО Н тл JЛ( 01.11 РО ,в·и ·, BJI IJ ІJ1 ' 
'ІЛНДЛ 111, 
1.1 Опнс існуючнх мt•нщін ,ш нн.•оfіів ш11со1нн.· 11t1110, 111m рнsроfіні 
Розробка nporp.1:-..1нoro зnбсШСЧ('ІІШІ С СЮШJІІІІІМ j ВЮІШШН1М 'J{ШДШІІІЯМ, Яf'С 
nере.1бзчас внкорнстJння різно\1з11іт1111х ·"~1·одів Т3 ~асобів. У ЦІ,ому роіділі 
розглян) існуюч1 методи та ззсобн розв'язання 11остав11е1111х зrшдшн,, а також їх 
праь.їнчне значення та можливість використання одержаних рсзультатш. 
Одпн з основн1L, мето,1.ів. що виkорнстовуються в розробuі 11роrрамноrо 
забезпечення. - це ~1етодолоrія Agile. Він полягає у використанні ітераційного 
підход) до розробки, коли робота проводиться)' коротких періодах часу, відомих 
як «спринти». Кожен спринт складається з nлануваю1я, розробки, тестування та 
огляду результатів. Цей метод дозволяє ефективно виконувати завдання та 
забезпечує гнучкість у розробці. 
Інший метод, який допомагає у розробці програмного забезпечення, - це 
метод Test-Driven Development (TDD). Він полягає у написанні тестів перед 
розробкою функціональності, що дозволяє забезпечити правильність роботи 
програми. Tecт-Driven Development забезпеЧ) є високу якість коду та забезпечує 
швидку реакцію на зміни вимог [ 1]. 
Також, в розробці nporpa~moro забезпечення використовуються р1зн1 
шструменти та бібліотеки. Наприклад, для розробки фронтенду 
використовується НТМL, CSS, JQuery та такі бібліотеки як React або Angular. 
Вони дозволяють швидко створювати складні інтерфейси та взаємодіяти з 
бекендом. Для розробки бекенду можна використовувати мови програмування, 
такі як Python, або Node.js та Express. 
Порівняно з існуючими метода~ш , розроблений телеграм-бот має кілька 
переваг. По-перше, він дозволяє кпієнта~1 здійснювати покупки рибальських 
товарів безпосередньо зі свого смартфону. що забезпечує ~~аксимальний 
комфорт та зручність. По-друге, бот мас функцію перегляду попередніх 
замовлень мієнта, що дозволяє відправляти персоналізовані реко~1ендації та 
7 
'l)ll У 211 1 117,ІІОl 1 І і 
npt' IП\) 111\ЇЇ, Щ\, 11іщщ11~··~ ріІН.'111, Іf1)\ІІ ІІОJІСІІІНІ юrit 111 ів І І шric НІ ,,у, 
ІЮВ1'0рНі 11('1~) 111-:11 
01.ер'І,;ані ре,, '11>П1ТІІ МШ() І І, IIр:ш111'I11(' 1I111'ІСІІІІЯ /IJIJI ро illJllf'CIIIIJf f)ИІІКУ 
продажу р116з.:1ьсь~-:11х тоuаріи 1ш 1 ~р 111 орії у 1,раї1111. В11 1<ор11с н11111и , cJ1crpaм-60 r п 
ззбезпечус nідв11щсння зручшкті п1 шв1щ1юсті 11рощ.:су 1амо11лс1111я , п тако,,· 
1озволяс отримувз п1 персонзт:ювані nроrю:нщії ти рскомс11даr1ії. І tc, u свою 
чергу, підвищує рівень задоволення 1ш1сн 1 ·ів та шбс-шсчує повторні rюкупки, що 
спрняс розвнтк) бізнесу . 
Зазначимо, що телеграм-бот с 110вшстю готовим до використання ти 
масштабування. Розроблений програмний продукт проходив повне гссгування 
та оптимізацію, що дозволяє запустити його в експлуатацію в найкоротші 
терміни. Додатково, бот може бути легко налаштований під потреби конкретного 
бізнесу, що робить його універсальним та готовим до використа11ня для будь­
якої комnаRії. 
Таким чином, наш бот є інноваційним засобом для продажу рибальських 
товарів в Україні. Він має безліч переваг 11орів1rя_но з традиційними методами 
продажу, такими як магазини або ринк11. Він надас можливість швндко та зручно 
замовляти товари за допомогою мссенджеру, зв'язуватися з менеджерами, а 
також має можливість автоматично опрацьовувати замовлення та відстежуват11 
їх статус. 
Одержані результати дослідження мають нрактичну цінність і можуть бути 
використані для запуску подібних проектів в інших сферах продажу товарів та 
послуг. Наприклад, бот може бути застосований в інтернет-магазинах з іншою 
спеціалізацією, такою як спортивні товари, одяг або електроніка. Використання 
отів може допомогти підприємцям знизити витрати на оре11ду приміщень та 
плату працівників, що значно полегшує створення бізнесу та зменшує ризики 
анепаду бізнесу. 
Також, збільшення популярності чат-ботів може вплинути на подальший 
звиток технологій, пов'язаних з машинним навчанням та штучним інтелектом. 
8 
ЧДТ ' ~З І() І 7 .003 I1:J 
Зп ос 1t11111i ро"11 н~ач1ю tр\>СJНІ кі111,1<іс 11, вr11ш11сіі1, 1н 1 11'•1 ш11 1 rх 1 ро ~робкоtо 
т.1 наJН1UІТ) в~шням ч~п-601ів. щ\, свід111111, 11ро 11011ут1р11іс 11, 11 і 1 ї ,cxiroJюІ ії. 
Тзкпм ЧІШОМ, ВІІСНОВОІ, Jl()Jl)ll't\C 11 юму, що В рамк11х JІІІІІСЇЇ бшcaJJallf)Cl,KO"f 
робот11 б) .'10 пров\щено досліщю:11ш1 ,1, ро 1роuнс110 1c J1e1 рам-бо I н JІШІ ІІродuжу 
р116ЗЛЬСh1'ІІ'\. 1оварів. І>~ 111 11роа11аJ1. 1ЗОВШІІ•  •ІС ІІ)'Ю'ІІ·  МСНЩІІ т.,1  ~І, ,ІСОG)1 1 ро·ш'и>:Jrннrи 
110діб1111х 'J:шщшь , ..1  з'ясова11о. що 1c11c1pm,1-Go1 с '!руч1111м та сфс~онш,нм 
з:1собом для продажу 1ооарів в ін 1 ернст і. 
Отр11ма11і рсзультат11 досліджс111> сві11чап. про ,с, шо uн1<орнс7аш~и 
телеграм-бота мож:с до'Jво.111111 КО;\ІПа11їі ·1бі111.ш111 · 11 продажі р11бат,с1,юtх ·, она рів, 
1мс~ , II1I••t  BUllt В втрати на маркс111111· т.а !Ір ос )' В".'..І  11 ІЯ про;\1у к·I·у. І>' о І' ,\.10:же 
взосмодіяп1 1і споживачами у реж11мі рсалмюго часу, що дозволяс швидко та 
сфскт110110 від11овідат11 на їх 1.1мош1с1111я. 
f І рак І 11i111t1 ці1111іс1 h 01 р11~1аI111х pt:1)'Jlh'J11ТЇB ІІОШІІ'UС В тому, ЩО створс1111й 
тслс1рам-бо1 може бутн зас1осова1111іt в рсат,1юму бізнесі Він 1·01овий до 
в11кор11ста11ш1 та мас поте1щіш1 юн1 ротшрс1111я 1 ·а ІІ(Жращсння фуню~іошшу. 
TcJ1c1 рам-б<.н І\tоЖе бут11 і1пс1 рова1111іі 'J і11шн~1 11 і11струмс11 ·1а~111 маркепшгу ш 
11род.tЖ}, що збільшІІТІ> сфсh.ї 111шіс 11. ііого в11корис1 шшя. 
Однак, 11срсд нщ,оваджсш1ям теле~ рuм-бог..1 у реальному бізнесі 11собхід110 
ре Іl'JІІ,ІЮ 11роашші·1уват11 р11з11к11 та нсрсnагн тако1 ·0 рішення, а також вrахува I и 
особтшості ціm.ової зуднторії та р1111ку. Важливо врахувати технічні 1а 
юр1щ11чні аспеh.~гн, 11оо'язані зі створенням та використанням тслс,·рам-бота. 
1.2 А11nліз іс11уюч11х ан:1. 101 ·ів 11r>01 ·рн,111 
Один з найвnжлнвіших зс11сктів розробк11 будь-якої r~рогра~ш - це знання 
того. що вже ~снує на рннку схожих продуктів. Такий аналі1 доrюмагас 
розробникам бути в курс~ остзншх тенденцій та знаходнтн ідеї для 
адосконаnенНJІ вже існуючих проду"--гів. 
У контексті розробки програмного забезпечення для продажу рнбальськнх 
ЮІІрІ8. ісвуе кілька анаnоrів, таких як "Rybalo\' Pro", "l7isl1brain" та "Fishing 
РоІвІа• 0.-Yi. ваІбі.вwп відомим серед них є "Fishbrain", який є однією з 
RM№ІWX crn111.11.oт рибалок у світі. 
9 
ЧДТ 231917.003 П 
•FishЬrain" є додаТІtОN, що надає користувачам 1ручниА та r1рсктиА 
інтерфейс да обNіну інформацією про риболовлю. оклю•1оючи 101,и JVІ• 
рибоJюUЇ, г.JІІІбини, аиди риб, спільноти та багато 1нworo. Додаток д01волJІf: 
JCOPIIC1Yll8118N створювати свої власні записи та завантажувати фотографії риби, 
що вови ПЇЙМ8JІИ. Крім того, "Fishbrain" надає користувачам можливість 
спілхуватиСJІ та обмінюватися досвідом з іншими рибалками. шо збільшує 
хомуиікативниА аспект риболовлі . 
"Fishbrain" також надає деJІкі додаткові можливості, такі як відстеження 
погоди, картоrрафуванu та рекомендації щодо риболовлі в певних місцях. Крім 
того, додаток працює в режимі офлайн, що дозволяє користувачам вести записи 
про риболовmо, навіть якщо вони не мають доступу до Інтернету. 
Вlt8Тlmenl 
тomorrow 
• 
11 20 21 22 23 ОО 01 02 
Common snook 
l'Н\ltl\MH С'Jlощ,:-.,н, рtнр,,6 1ш І\JШС І ІІ\\ о 11 рrн ptІM II ІJl"'tJ нроJ1 у 1 І )' 11 o(jJI І 11 
:юда~: рнбз.,.н)сьм,, 1оваріn 1ш 1cp11topi'i У 1 с рuї1111 1 біт.ш JІ J) ІІІJОбтшною • 
·оно,нчноі' точкн ~Ор) , ОСЮ r\ І,КН \\С ДШ' МОЖJ11 1Ві с 11 , 'JGi11t,ІJHІHt сфскrнu11ісл, 
оботн та зменши.тн ззтр.11н н.1 оlк·пу1·ову 1ш11ш1 . 
Також в V1'-раїні існ) ють деякі ,111ало1 н 11 ро1·rш\1но 1 ·0 · •uбезr,сченшt, що 
икористовуються в сфері продажу рибальських товарів. І Іапри клад, сучасні 
нлайн-маrазнни, які спеціалізуються на nрода::жу рибальсь1<ого спорядження та 
·сесуарів, такі siк Flagn1an, CarpZandcг, Ibis і т.д . 
Рисунок 1.2 - Онлайн-магазин рибальских товарів «Flagrnan» 
Одним з головних переваг таких онлайн-магазинів є те, що вони надають 
можливість зручно та швидко придбати необхідні товари з будь-якої точки 
світу, а також надають різноманітні послуги, такі як консультації фахівців, 
програми лояльності та багато іншого. 
Однак, в порівнянні зі створенням власної програми, такі онлайн-магазини 
ио можуть забезпечити такого рівня персоналізації та гнучкості в управлінні 
есами продажу, які можуть бути дося.гнуті власною програмою. 
Оrже, проведений аналіз існуючих аналогів підтверджус потребу у розробці 
ної програмного продукту для продажу рибальських товарів на території 
яка забезпечить максимальну ефективність роботи та 
Ірівень персоналізації та гнучкості в управлінні процесами продажу. 
І І 
2.1 1 Прu, ••о1Dа1•модето8ІDІ Мо.,.JІРІJОС аиоf oea,,t 
---·~•aolaSJIICd 
у ЦІОМу pawni pO'lmaR) предметну о&ІІ&М Н8ШОІ'О JlpOCIC1Y .., .... 
М8І'DІІІІу J)llбancwaac товарів 3 МОЖJІІІІІЇСТІО адмhrІстру881Пd ДU 'ІаІ'О, а.,с5 
ln'l1inn·тв. пі епемевтв поВІІRІІі бути в нашій проrрамі, иео6хіJІно 83118'111'1'11 ІІСІ 
ЬЖJІDі" фувціІ, пі бу.цуn. дОС'І')'пні користувачам та ІДМDІіс1рm,рем. 
ПерІІІІІМ епеме&том нашої проrрами є список товарів, пі м(8118 прюа&rrв 
■СІУDЧ має МІПВ мmмивість перегпнути катаJІоr товарів та дізватиа, про 
ваовість та варrість. Друrим e.neмetn0м є мо,кливість додавати товари до 
wиа та оформuти замовпенu, а третім - м08JІІІВіСТЬ зв'JDііІВ(:Ь з 
· · crpnopoм та отримувати відповіді на свої 38ІІІІТ8НD. 
Дu тоrо, щоб зрозуміти, п ці еnементи пов'азані мас собою та в 
взаємодіють з користувачем та адміністратором, ми побу.цуємо моде& 
предмеп1оі об.пасті. Дана модель буде описувати всі сутності та зв'язІСИ між ними. 
Дu вашої nроrрамн буnо створено наступну модеm. предметної обпасrі: 
- корвщувач: ім'-, прізвище, те.яефон, коШІІІС, замовnеНІІJІ; 
~і8, опис, варrість, кіJІькість 
нстувач, списох товарів, 
ефов, СПВСОІС зама 
191 7 00~ 1І 
І 
І l t . · .· . 
. . 
. -.......... 
. :. ~ . ~.  
~-
1. .·· 
І І ~ -.~· -. ·. ..  
r--т--, •• • / І ·. ·. ·. .. 
.·  - І ·. . 
. / -- _t $ • •. _ • •• •.• _· •• 
:'. : - -ГtПr-. -- __ ;-:-
.--~.--. - W. li 
·~ ~ 
./ :· 
.: ·: .... .. .· . 
. . 
'І \ І ' \ І tJ І 1 Щ\ \ І І І 
\ \"іІІt,'11 \1 'Ір • , t П Ін ІІtІІІІІІІІІ ІО І 11 ІН І I J І 
K\.:J)~ в. "І'Н І о, Ф. Нkці І ,н. IILl "11111' ІІ,\ІІІНІ ІІІ І І kСІІІ І 111 tt І 
К, 1 н т в,'' - о o6n, ш (1 н111<ор111,;НШ)( 1с11с11, 1м Go, 1 
пок~ пок рнбаль · 1)к11х, unpiв 1 , 01 1,., н11111я 111форм щ, 1 11ро 1111 
~1DдСЛЬ П} д 1 ТІІ\ 'і 06л,1с1 і ІН ЛІО'І(І(. 11(\С І) 11111 CJICMCII НІ 
Корис1увnч - южс -здіі1с11юш1111 1омот1с1111я 110 ron;ipн , r1cpcr ,я 1 rи 
кnтзлог товарів, отрнчува111 ІlООЇ)~() 1JІСІШЯ IIJIO С І атус ШМОВJІСІІНЯ • 
Адміністратор - може додаun 111/uндшн1111 товнр11 ·1 каталогу, ксруnати 
за~ювлсннями корнстуnачін, відrюІlід:1111 ш1 заr1 1пюшя корнстувачш. 
Катало,· товарів - nюночас в себе с,шсок rоварів 1 назвою, оnнсО\І, 
фотографією та ціною . 
Замовлення - ~1ісппь інформацію про тоnарн, що були замовлені, адресу 
доставки , дату та час достаuки. 
У термінології UML .модсл,) нрсд~•~тної об,1асті - це діаграма класів. 
2.1.2 Елементи моделювання 11рсдмет11ої облас1 і 
Основними елементами моде1і предметної області будут,,: 
Каталог товарів - це список всіх товарів. які дос1у1111і для продажу в 
~1з1-аз1ші. Катшюr· повинен містин1 інформацію 11ро кожен ·101шр, гаку як нuзва. 
фото, опис, ціна, наявність на складі 1:.1 інші харзкп.~ристнюs . 
Корзина - це е:1емент. якнй до·нюняс корнстувача\1 збнратн rовари, яю 
вощt бажають купити. Кор1ина повинна місти111 інфор\шцію про :кожен товар. 
який користувач додав до неї, а п1кож ·~а1·с1ль11у суму за\10впеш 1 я. 
Оформлення замовлення - це елемент, який дозволяє користувачам 
оформити замовлення на придбання товарш ·з корзини. Корис1увач 1юв~111с11 
вказати свої контактні дані та спосіб :юставк11 п1 оп 11ап1. 
Адміністративний функціонал це СЛС\1СН І. якнй дозволяє 
адміністраторам магазину керувати товара\tИ. зачовлсннями. корнс1увача 1н та 
1ншими елементами системи. 
СnовіщенНJІ - це елемент, як11й дозволяє надсилати корне I увача\1 
D08ІДОМJІевна про замовпеІІНJІ, стан замовлення та інші важливі події, пов'язані з 
І І 
IIOlrlflll•••1111a---■ - ~·.,..,._и 
l1porpuoa р1nімцІа 1Uerpeм.ao,, маrа1ииу рм&uІа.с••и 
~ бу.1• рсnробnена на 8ИкорІІСТ8НММ мам 
IIDCll"PINYl18111RІ 'Гypekript. АІІНамічноІ APl-oplarro118110f МО8И nporp8МY88IOl8 
nобуеаі eJleNelrria модепt0кнн1 предметноі області буауп, •икориста 
JUarpaNllмoaUМL 
UМL мк ІІ8С'І)'nні rрафічні символи (19): 
Г,с ІІw■І annu 
,1ІИОU особа (актор) 
о ааріант unt0pиcтaRR• 
D ІІІОМеаmр 
о пакет 
об'скт 
ІСІJМІІОНСНТ 
ДWІWІІСТЬ 
СПR 
; ...... С'І'ІІІ 
Ч) ~ І'У ~31917.ООЗ ІІ'J 
- І \1афІ'ІІІММ, ищ,о:~ 11 1 1 111 <,1fІІ tІІТІІ 
nuiiю ......... L\COltІ.alt, 
~ 
-_-_- - > ИU[JІ;)ШСІІІ!_• 3.1.ІІ~ІОСТІ 
-... ., 
І ht,'UIOIOCШI- ) СПі\ІІ•)І'ІІіЩІ\М 
-<> ІІІ}'еІ ІНІ■ 
- -~ 
t..\\.'\tl101Jfll111 
--< 11p11 П.iJ•1 lk!'\11 
~ --. - -·--
;rAo:~p,:.nO Пці!ІІ 
--< -
J,,.'LWl!t~ 
-<> \4~1 
- - ---
npon111/ пот~~ ynp:1aл11nu 
noo. . ,,, 
І--- - 8ІІК.'11П: 
г - (КК)(><:ІМ 
,._ _ - - ПОІІ<'J'ІІ), 11 
Рисунок 2.3 Сдна.1ьні елементи uМL[l 9] 
У процесі проектування роботи будуть використовуватися базові діаграми 
UМL для створення основної моделі предметної області. Кінцевий результат 
моделювання матиме такий вигляд: 
д, • .,.. ... д1 .. ,-р .., , .. 
стр:,ІІП)'р• ... ovoon~t•тi• 
ДІагр:о\Іа 
ПА"М-11> І 
)\,,., І'"'"" 
[ puJ1op,a1111w 
Ді■,ріІ ... 
... - :&І■л"11ос-tі 
/1111,1,1 1"" 
,'\ЇІ JJ8"8:t 
кІnа••'" 
8ІІТОU8ті8 ,J,larpa"a 
DOC.IIU08B0Cт1 
ДІаrра":о 
ІСО."')'Пі а.:а ції 
вовні діаграми UМL [ 19] 
Ч) ~ 1 , , "'' І 1) 17 (Ю \ 11 І 
-"·  І ·-"'  \> t)-t)\.)ЧH t't' 1 І 11, !\\1)ДІ.' 11,,1111111HJ 
Р()00Чі\ 06 1,Н.' 11, М{))\1,\)1І,)ІН1ІІІН1 " НС 11р11 • І Ір, JtC ІJЩИУІІІІ1 l l1t.JI ,Ю І Jlt.JIJ Н/11 
процс1.'ЇВ та 1ю \11і, що :,..:прю, 1 •р11і J1J 1)1 11рс,нмс 1110',' 11G1111c, і 121 
те 1('rрам-бо 11.)\t. рІ.'ю1.,чз 061ш1.": 11, :-.ю)1~J1 юв:11 1 ш1 міс 11111, у tлбі 111ю1tсс11 11 .rrшн 1111и 
товарів, їх оnлзтн та дост~шк11 , а так,,ж t1J1мi11ic I ру11111111н Ga 111 дшшх 1011,1р111 І 
КШСНТІВ. 
Робочз облзсть моделюв,шнн для 11:.111101·0 1 еJ1с111ам-бо ,у буле склада пrся J 
трьо, основн1rх частин: 
КорнсТ) вачі - це люди, які буд) ть використовувап1 програму, 1ареєс1ронані 
та незареєстровані користувачі. В залежності від статусу користувача, будуть 
доступні різні функції програми. 
Ад.\1іністратори - це люди, яю мають права доступу до функuій 
адміністрування програми. Вони можуть керувати товарами, за~ювленнями. 
користувача~m та іншими аспектами програми. 
Товари - це головна частина програми, яка містить список доступних товарів. 
їх опис, ціни, наявність та інші відомості. Користувачі можуть переглядати 
товари, додавати їх до кошика, робити замовлення та оплачувати їх. 
Для зручності роботи з програмою, буде створений інтуїтивно зрозу~1ілнй 
інтерфейс користувача, що дозволить швидко та ефективно користуватися 
проrрамою без особливих знань в галузі програмування та роботи з телегрз.\1-
ботами. 
На рисунку 2.5 наведена модель основних сутностей систе,ш. Ці сутності 
ь тісну взаємодію між собою та створюють основний геймплей гри. 
17 
u 
9 
Pnx!utt ...... 
о,ое, 
ч can 
Рисунок 2.5 ~Іодель предметної області програ\1НОЇ реа,Jізації тслеrра:-,,1-боту 
2.2 Формування та аналіз вимог 
2.2.1 Формування вимог до програ~mого забезпечення 
2.2.1. l Первинні і детальні вимоги 
ПЕРВИНІ-П ВИ1v1OГИ: 
розробка телеграм-боту для магазину рибальських товарів; 
можливість перегляду каталогу товарів; 
можливість додавання товарів в 1<ошик; 
можливість оформлення замовлення; 
можливість отримання інформації про статус замовлення; 
Можливість адміністрування (додавання/видалення товарів, З\tіна статусу 
замовлень тощо). 
ДЕТ АЛЬНІ ВИМОГИ: 
При запуску боту користувачеві відображасться стартове меню з вибором 
пувктів "Каталог товарів", "Кошик" , "Обране", "Про пас", "Категорії товарів". 
При виборі пункту "Категорії товарів" користувач може переглянути 
ок товарів, який містить назву , ціну та опис товару. 
При виборі товару користувачеві відображається детальна інформація про 
, а також кнопки "Додати в кошик" та "Повернутися до каталогу". 
При виборі пункту "Кошик" користувач може переглянути список товарів, 
одані в кошик, а також їх кількість та загальну суму замовлення. 
При виборі пункту "Оформити замовлення" користувач має заповнити 
18 
форм) "\ НТ~1!\'ї ІН)І,) інфор~шціt ІО, {І l\\kO \\ 1pJ 111 1:1101.:16 ОІІ l lltl 
l1p1 підruердж-снні JШ,ЮU.ІСІНІ)\ І орт; 1) fІІ)\JСІІІ JН юfір ІМ 11 r, 
пі;~твс-рджсння З но,,сроч ЗІ.1МОІ\ЛСІtІ\Я \ ,\ 111фuрм1111н ІО 11JIO СІІ()СІG ('ІІІ IU НІ 
Корнстувзч nоnннсн l\НІl ІІ мож11111іс11, I1срс1 шIдn 111 к II шо, rон рш, 
дода.вз111 їх до кошикз тз здійснювзт11 r10купю1. 
А.лміністратор повинен ~,зп, :-.южл11вісr1, дода ва 111 11oni , овар11 до катшюrу. 
ре:~аrувати існуючі товзрн та переI·лядз1It за:',ІОВJІсння. 
2.2.1.2 Ви~юги за.,ювника і розробннка. Функціональні та нефункuіонnл1,ні 
Вl~ЮГИ 
Маємо такі вn:м.оги замовника та розробника : 
Вимоги замовника: 
бот повинен бути легким у використанні та інтуїтивно зрозумілим для 
користувачів~ 
бот повинен мати можливість повідомляти користувачів про статус їх 
замовлення, включаючи підтвердження замовлення, підтвердження 
оплати та інформацію про доставку товару; 
бот повинен бути здатний обробляти багато запитів одноqасно, щоб 
забезпечити швидку відповідь користувачам; 
Вимоги розробника: 
бот повинен бути розроблений з використанням мови проrра!І.1) вання 
TypeScript та JavaScript; 
бот повинен мати можливість здійсшовати запити до бази даних та 
виконувати операції збереження, оновлення та видалення даних; 
бот повинен мати гнучку структуру, щоб забезпечити можлнв1сть 
додавати нові функції та модифікувати існуючі; 
розробник повинен забезпечити належний рівень безпекн бази даннх та 
захист від зловживань; 
Опишемо функціональні та нефункціональні вимоги: 
Функціональні вимоги: 
бот має мати можливість авторизації зареєстрованих користувачів; 
19 
боr ~tЗС нurщвзтн 1'0!)11('Г)'Вl\ 1ШМ IICJ)t'JJi1, ІІНІІІрів, lJ\CI лос1у1111і }11/JI 
ПО"К) пкн~ 
КОрНСТ)Взчі мають мат11 МОЖЛІІВЇС.11, ДОJ\ПІНІ\'11 ІОLІЩ)ІІ II КОІJІІІК нт, 
лодальшоі ПО1'.') пкн; 
корпстувачі мають матн ,юж1111віст1, 11ере1·лядат11 з~1 іс·1 своrо кошию1; 
корпсТ) вачі ~1ають ма1н l\ІО'іІ\.л11вість оформляти замовлення ш.1 rюкупку 
товарів зі свого кошнка· 
' 
адміністратор має мати можливість додавати пові товари до магазину; 
адl\uністратор має мати можливість видаляти товари 1 магазину; 
адміністратор має мати можливість редагувати існуючі товари в 
магазині ; 
адміністратор має мати можливість переглядати список замовлень, що 
бу ли зроблені користувачами; 
Нефункціональні вимоги : 
бот повинен працювати стабільно та швидко в умовах мережевих 
перебоїв; 
бот повинен мати інтуїтивно зрозумілий інтерфейс для користувачів; 
бот повинен мати можливість масштабування, тобто додавання нових 
функцій в майбутньому; 
бот повинен бути захищений від хакерських атак та зловмисних дій; 
база даю,rх повинна бути захищена та забезпечувати швидкий доступ 
доданих; 
Формування вимог за допомогою діаграми прецедентів 
орення діаграм прецедентів у проекті буде використана мова UМL 
а мова моделювання, використовується у парадигмі об'єктно­
rо програмування [З ] . У таких діаграмах буде відображений актор, 
бути зображений у двох варіантах: у вигляді "чоловіqка" або за 
· ограми, яку запропонував розробник і яка зображена на рисунку 
20 
ЧДТУ 231917.003 ПЗ 
<<adoP> 
~ 
іnермет-маrаJІІІУ 
б 
Рисунок 2.6 - Варіанти графічного позначення актора: 
а - у вигляді «чоловічка)); б - у вигляді фігури; 
в - у формі піктограми 
Існує 2 види акторів: 
Адміністратор магазину, це користувач який має доступ до функцій 
DРУ88ІІЮІ то•рами, замовленнями та іншими діями, пов'язаними з магазином . 
Покупець - користувачі, які взаємодіють з ботом для перегляду товарів та 
Асненu покупок. 
ШСП8 8И3Начення списку акторів, йде визначення списку варіантів 
рИСТІНU. 
Вapiurr використання це взаємод1я актора та системи . На основ~ групи 
8ІІХОристання у системи визначається її поведінка. Кожен варіант 
належить одному із акторів. 
діаrрама прецедентів для телеграм-боту магазину рибальських 
таких акторів: "Покупець" і "Адміністратор". Основні дії, які 
ані в системі, вІСJІІОчають: 
l1окупець може nерегтrдати каталог товарів, обирати 
через бота. Він може вказати юлькість товару 
JIOCТUD. 
ювари 38 рЬввмв крвтеріООІ1 
) lt'Ш~ k \~ \-.01 'І 'J'І \\І : \ 1(,1\~ llt'llli ю С ІІІ V І ~\І i, І 011 tJНІ І І 11 І1ІІНІІJ І ! І f flJ Іf 
1ш11рн1-::10'1.. "В) \t,;",'- 1'1\ l)Шt\в'', '' І Ір11мш1111" 1 1 1 
\ нбі\ с11('\;\'І 1у опшп 11 : І Іоh.) 1 н~НІ• tt))I с о 'l'Ht 111 с11ос16 011 ш 111 JІ 1я ноr о 
--ам\)ВJ1СННЯ. нnщ Н'\\Лnд. ОПЛО'І J"()1Ї11t ою 11р11 OIJ)IIM[\Jllli пбо 011 І ,r,,, ІІJІ,111./J 
ДМН•Ш:трзтор: 
Вв~дення дан11х: адміністрз,щ, НІ( можл1111ісп, ввод11111 11 t111i 11ро 11011і гоrмрн, 
такі як назва, опис, ціна тощо, в с11сте,1у мш·аз1111у. 
3:-.,іна даних про тов:~р: ад:-.,ініс1ратор може 1мі11ю1шн1 Jtu11i rrf)O товщ,, ,акі як 
ціну, опис. наявl!lс •ь , щоб нідтрнм) взпt актуальну інформаuію. 
Додавання товару: адміністратор може додавати нові товари до каталогу, 
заповнюючи необхідні дані про товар. 
Впдалення товару: адміністратор ,юже видаляти товари з каталогу, якщо 
вою~ вже не 1.остунні або nерссталJІ прод.аватися . 
.7  - Діаграма прецендентів телегра~-богу ~1аrазину рибальських товарів 
22 
ІІМІІ; ltO ~.. ..-.. 
.-iipe1..,_.df!~tilll81Jll)'~'f088Pl8 
uасІа~:іІІ)'ЮВ8~ 
Іх ІІІІDІОІ8'Dків. '-tQПОмаr&ІОЧй 8 розуr.dвві fx C1J'YX'l'YPII Т8 
.. 
.. .. . 
ЧДТУ 231917.003 ПЗ 
~ому рисунку можемо бачити діаграмму класів панелі 
• ~ телеграм-боту. 
(l&nit 
Rf 1ІEn1t 
, 
\ І 
І \ ;< ' І 
І І 
ІІ  І ' 
, \ І 
І , І ' .., І  І 
\ І 
І' 
\ 
І ' 
1'17003ПЗ 
~..,.-._-_..., ~.-.  .....,пено ді8J'Р8М)' кпасІв дn• кюrо 
Чlt1> 211917.003 ІІЗ 
"_)_  3 '_)  д·1 а1- ра:-.ш nакепв 
У випадку проrра!\шої рс.1Лі1а~1ії телеграм бо1у мш·аз1111у рибат,с,,ю1х 
товарів з можлнвіс ~-ю адмініс lP'r вшшя. діа, ра,,а пакетіn дoпor.1ar~r. зрозумі I и, які 
комnоне~1ти снст~:-.щ належ:11 ь до різн11х функціошшьннх груп і як вони 
взаємодіють між собою[18]. 
Нижче ш1вс1,сна діагра,1а основних пакетів програмного комr1лсксу 
\\'ЕВ 
Serv1ces Controtlє1 s Views 
вот Pr1sma 
Me11us 
Рнс)'нок 2.11 - Діаграма пакетів 
2.4 Архітек1 ур11е 11роеt-:1)в~н1ш 
2.4. l Діаграма компонентів 
Була розробл~на діаrра,1а ко!\шонентів, яка по казус взаємозв'язки м1ж 
логічними та фізичн11м11 модуля:--111. з як11\. складається проектована. система. 
ІІJ1ІВМ8 компонентів відображає стр) кrуру системи та взаємозв'язки 
и. "Сервер БД" ВК:-почає базу даних (Бд), SQLite Server для 
обробник для виконання операцій над базою даних та \Veb 
вхідних і вихідних запитів. ''Пристрій користувача" включає 
ані забезпечує інтерфейс д.1я користувачів для взаємодії з 
26 
ЧДТУ 2з1911.ооз m 
{] 
.ни1111•І"• 
------ 1 -:.: ·~.:з І 
.--· ----• 
І с 0"1~,:. Ф4]1 
,r••··-·"' 
.12 - Діаграма компонентів взаємоз'JІЗків покупця зі сервером БД 
проrрамноі системи на апаратних засобах. Діаграма 
ва 8118(,11ІВИХ засобах є важливим етапом в 
_,.,.пporpuotoi системи, що вкmочає програмну 
~WCIIX 1088.рЇВ З МО.ЛИВЇС'ПО 
ТО8ІРС ■ 
....o crt 
&маІр ІНІІІСІfУ 
--мtyJ 
Ч;tl-Y 2l19 17.00J ІІЗ 
n.-жaJЗn1 cn1•co1 
.~;;1.1оелен" дм 
uенеджара 
fї .:твер,::'І:ен11л 
~МОГ:іо:Ч- -
ilor.yne~,,, Пov,reL :. не 
п1.:пзер.:1~;:,~ n .:пвер.:111:ує 
зauosne"nF. ~1.ю2ленн~; 
. . 
ОСТІ ДЛJІ пщтвердження замовлення 
30 
\\) tl\' "1J \ 1)17.00J І І ' J 
no,tJITІI ,1~1)( 
ооr.1ш• iaщ)tntнк~ 
ме"од, ео, 
)ІІJОІ/11НН~ ЗамоОNЮІJІ не 
оnла,ен, onna•••• 
за·~1о~ 1 м,r..том т.~ 
у то.не •ня 0/ІІ'а rи 
)JМОІЛf•~~ ЗемоІІ\tнн~ не 
oмa~,?..it оnnачен11 
ок 2.16 - Діаграма діяльності статусу оплати замовлення 
а послідовності 
було реалізовано д~аграму послідовності. Вона 
~ти комунікацію між різними компонентами системи. 
ЧДІ' ~Н917001 ІІJ 
НІІЖЧС' шшс \СНО дскі ІЬ)\(\ \І,\ІJ)3М ІЮС 1ідо111юс11 (IIJIOCkfOIIІIIOJO 
про1-р.1мноrо ззбс-.зnечсння. 
l .. . І 
І( 
Рисунок 2.17 - Діагра\.fа посл ідовності для ПОК)'ПЦЯ 
о 
№rr,o заІАОаnе.ь детал, заuоаnен._;; З.мо..лен,,я л 
ror.yneLiь 
менед,rер 
Orpv.1.1a,oo:: 
СЛ'~ 
38УОВГЄмо 
1] ЗмІНа стану Отримання 
заuовr,еннF. ІНФОРІ.ІЗІ.$.~ 
про зм.ну 
і] статусу 
• замоалення 
'0.:.-.- U 
'' '  
сунок 2.18 - Діаграма послідовності для менеджера магазин) 
цесу проектування проекту була реалізація діаграм 
одії між частинами композитної структури та 
32 
НН~ЧІ.' ІНШ~!1~ІІІ дІ. l1'ІПМІІ !\ОМ) ІІІk,ЩІІ ІІ • ІІІ 
1 
ПО<УІІе<.!> 
Рисунок 2.19 - Діагра!-.1а комунікації менеджера з покупцс\t 
,-- -
Рисунок 2.20 - Діаграма комунікації покупця 1 менеджером 
2 S.4 Діаграма скінченного автомату 
розуміння станів та переходів системи пщ час виконання пев1111х 
ула реалізована діаграма скінченного автомату. В даному випал.ку 
на діаграма скінченного автомату для ста11ів 1амовлсння lб]. 
l!ocr1111~tne11-; u,:т~ 
-о,,~_., IJ'<J 
..- -
(І)-• Вшонано Г'ер..,., Еас е "',., 
--1 orp.,-.1·;·13 .. ,. 
'--------' 
х 2.21 - Діаrрамма скінченного автомату для станів за\ювлення 
33 
ЧJt1 ,, ~З\ 1>17.00311 J 
J PO'JPOI"t, \ ІІР01 ' 11'Л 11101'0 ' J ,\ І.Є' НІІ~'ІІ~ ІІІНІ 
J. І Ро1роб"а 11ро1 ·ра :\1tІО1 о 1,с1"''·'"'"с) 
3.1 І Обrр) 11туnа11ня вибору ·1асобіn rcr111i :~1щ1ї 
І 1роарІ"умен 1·) ю nнбір ссрrдош1щn розр0Gю1 н1 мов 11ро1 рuму1111 11 1 1н Jim, 
11ро1-ра.,шої реалізації телеrр:.1м-б~ну ~Н\І"tНІІІІ\ р11б,u11,с1,ю1х 1011арі111 мо11,т111іс I ІО 
ад,1іністрування, внкорнстовуючн І І П\lL, ( ~~. TypcSc1ipt, Nodc.js. Expr·css.js, 
P1·is111a (0Rtv1) та uraшrny (ЛРІ дня 1слс1 ра,1-бо1а): 
11 І 'f\ 1l і CSS т1я фрон1 снду: 
1J Tt-.11, 1C S~ є с1зндзр1нt\\111 ,юва,ш для розробки нсбі11rсрфсі1с1u Bo111t 
забезпечують можлнв1ст1, створення 1ручно1 ·0 та 11рнuа6Jш1юго і11тсрфсйсу /!ЛЯ 
користувачів мага111ну рибальсью1х товарів; 
І ITML I CSS с добре підтр11,1уваним11 та \ІЗІОІ ь велику кількість готових 
рішень і бібліотек для розробки ін1~рфсЙС), що ._\0'3ВОЛИІІ> ІСКОНОМІ1НІ час ЛJ 
зусилля 11р11 розробці; 
2 TypcScпpt 1111я сернер11ої чuс 111ю~: 
TypcScпpt є т11пі1овшюю 11ерсіс10 Ja\aScr1pt. що до·шоляс в11явля п1 
ПОМИЛКІІ на с1,щі компіляції. Це до11омаrас 1:'-1СІІШИ ПІ J\ЇJІЬКіс [І, !ІОМІІJІОК І а 
підвищ11п1 надійність програмного кону; 
TypeSc.-ipt 11ідтрШ,І}С рол1111рс1н1й функціонал, 1ак11й як класи, '1Одулі та 
і1псрфсйс11, що с1 1р11яr структурувашно ,а орп.1ні1.щії коду. Це особт1во корисно 
для велнк11х проскrів, де необхідно ·~бсрігаш чнс1огу коду 't.J. 1ру•1111с11, ро1робки 
[7]; 
З Node.js та Express.js для серверної реалізації: 
Node.js є потужним серверним середовищем, яке дсн1юляс н11конуна1и 
TypeScript на сервері. Це дає можливість створюватн ефективні та швидкодіючі 
серверні додатки [8]; 
Express.js є лепсим та гнучким фреймворком для розробки всбдодатків 
ode.js. Він надає зручні інструменти для маршрутизації 1а обробки 1апитіn 
ode.js та ExpressJs дu серверної реалізації (продовження): 
34 
ЧДТУ :!31917.003 r ІЗ 
Express.js чає простий та зрозу,1іл11й с11н1аксис, що спр11яс шmщкіfі 
розробці і підтримці серверної логіки. Він також 11адас баm10 готов11х \юдуліо 
та функцій, що полегшують роботу з чаршру 1111аuісю. обробкою 1атніu та 
відправкою відповщей; 
Node.js та Express.Js підгр11,І)' Юrь асинхронну ,юдель програмування, 
що до"Jволяє ефективно обробляти багато11оrо11:ові за111п11 та забt.:"J11t.:чува1и 
в11соку продуктивність; 
5 Prisma OR\.1 (Object-Relational :Vtapping): 
Prisma с потужним 1нструмснто,1 для робо111 ·3 базам11 щш11х в '\Jode.js. 
Оі11 11,щас зру•11н1іі спосіб взає,юдії 1 базою даних. дозволяючи в1111:ор11стовуват11 
мову 11rограмуван11я для робоr11 1 да1111\ш, за\Іість написання склапних SQL­
·1a1ш I ів [ І О); 
Prisma автоматич110 генсрус пшізовані моделі даних на основі схе,ш 
бю11 да1111х, що спрощус робоrу з да,111.\111 та забезпечус персвіrку т11пів на етапі 
1(01\\ІІЇJІЯІtії [ І Oj; 
4 G1-.ш1n1y - АРІ теле1·рам-601з: 
G.-а1111пу с потужною бібпіотскою дпя ро1робкп тсле1рам-боrін на мові 
11рограмувш111я Pytl1011. Вона надає 1ручнн11 ін 1ерфеfіс д11я створе1111я тu 
керування фу11к11іо11аль11іспо 601·а [ 11 ]; 
Вибір такого набору технологій дозволить створити сфсктив11у та 
функціональну програмну реалізаuію телегра\1-боту :-.~агазину рибальських 
товарів з можливіс110 адміністрування. Ось кілька аргументів. які підтримують 
нолоrііі: 
розробка вебінтерфейс) : В11кор11стання 1-П~fL. CSS. Bootstrap та 
є леrхо створювати зручний та прнваблнвиіІ інтерфейс для 
маrазину. Можна використовувап1 готов~ компоненn1 та 
nраскоревнw розробки. 
оер1ерве ре1,їзаці•~ ode.js та Express.js забсзп~ч~ ють сфект1ш11~ 
tМSD Іі J р11,nвцm. Іх асинхронна модель 
35 
ЧД1 У 2319 І 7.001 11 і 
рограмування дозноляс оброблят 11 ба1.11щ10 1 онtJІІІ ш111111t 111 шGc t11c1 1y 1 111н.;о1 У 
роду1n-ивнісп,. 
Типізація тд структур~ коду. В~,кор,н.:т,11111 н J'yp~Script J10111ош1, 1нн111 1и, 11 
омилки на етапі компіля11ії, що с11р11яс щщіfі11ос1і 111 11і 111111111у, 1111111дюс11, 
озробки . Клас 11, моцуJІі тn і111 ерфсі'іси ;ю1юмаr'tІю г1, ор1 н11і1у11.11 н ІСО/1 1п  
олегшують спіш,11у робоТ)' о команді . 
Зручна робота з базою да111,х : Prisma як OKt\-1 сщющу(' 11 'Шt.мо;1ію 'І ба ·тю 
зних, дозвот1юч11 викорнс·rовув~п, мову r1ро~ ·рамущ11111я дт1 робо, и 1 ;ш1111м11. 
она автоматично 1 ·с11ерус п111і:зова11і мо;1с11і ;1а1111х, 1110 1юJ1е1111у(· роботу ·1б ,пою 
аних та забезпечує 11еревірку типів. 
Розшире1-1а функuіонш11,ніс11, 1е лсrрам-бо In : в~1коrис 1 ·ш111и бібніо Iс .:ю1 
rammy для АРІ rслеграм-бо га до·нюJ1яс 1ру•11ю обробт1 п, rю11ідом11с1111я, 
оманди, клавіатуру та і11ші елементи в·1асмодії. 
Використання таких тсхнолоrііі дозволи11, реалі1ун.ни 1ю1уж11ий 1а 
ункціональний телеграм-бот маrа11111 r11бат,с1,к11х ·,ов:~rів 1 мож;1и11іс·rю 
міністрування. Вони забезпечуюп, 1ру 1шу розробку нсбі111срфс.:і1су, сфс.:І\11ш11у 
ерверну реалізацію, типізацію коду, 'Jручну роботу ·1 базою ;щ1111х 1 а po"Jш11r~11y 
уикціональність телеграм-бота . 
.2  Опис структурної (функціональної) схеми 
схема відображає основні ком1ю11с11н1 ripor·1< 1у ·н1 їх 
хи (12J. Користувацький інтерфейс та адмі11іс-1 ра1 ив1111й і11н:рфейс 
з користувачами та адміністраторами. Бе1сснд 
взаємодію з базою даних. База да11их зберігає 
. Telegram АРІ забезпечує кому11іка11ію ·3 
повідомлень про замовлення . 
є забезпечити зручну покупку 
даних про товари та 
та зручну комунікацію 
ЧДТ> :!3 І 9 І 7.001 11 3 
Застосування такої стр} ~,,.,урноУ с:-..емн доз!lоляс створ11111 фу111шіо11ш11,11у тп 
ефе1,.-гнвну автоматизовану снсте,1у для магазш~у рнб::~т,с1,ю1х roн::iriu, s1ю.1 
забе·шечує зручність корис1увания. сфектнвне адмініструшн-111}1 п1 зuдово11с11шr 
потреб клієнтів. 
~1.вн:стратор БД 
Го лоsне 1.{еню Управління 
Табт1 .я тоsарів 
тогарам,1 
'J'І"І ра :!' \п1·ннr/,І  
Пошук товарів 
замоsлення1.1,1 
Уnравл~ня 
АРІ 
користувачами 
Р8сувох 3 1 Crp)'Ja)'pиa схема основних компонентів 
37 
тe ..-erp.r,1 оот з 
ra~er. ." ю 
..Z:!JW<-P'/ Si-'IC, 
Вщо6раJІ:е,н= і ::.таер~-нr­ 0ФорМЛЕ~f1;: 
Вsеденt-JІ 
Сіі,',СІ(}' ЗсіМО51:е-fо :а~оsлсrі'Іі :.сі:JО~ЄJ н,• 
за-;иту 
Результат 
у 
Рисунок З .2 - Функціональна схема роботи з замовленнями 
3.1.3 Опис логічної схеми снсте~ш 
У рамках бакалаврської роботи на те\f) "Програмна реал1зац1я 
еrрам- боту магазину рибальських товарів з можливістю адміністрування" 
використана архітектурна парадигма Model-\'ie\\'-Controller (М\'С). 
є оДНІІN з ваІпошвревіших підходів до організації та розробки 
oro 3Іб1...-.м&1, особявво ДJUІ веб-додатків. 
~ється на три основних ко!'.tпонентп: 
38 
ЧД І У 23 І() І 7 001 111 
~tоде-ль (\1odel): Binпoni ще 1з ) nр.11111і1111я Jщ1111м11 rн fіі1t1сс-лоrікою 
дод~НК). у К\)Н1сксті тслс11х1\1-Gо1) мш аз1111у p11Gill11,c1,1<11x ~uнзрів модст, 
включає стру1'."'Т) р11 дЗІ\І[\, МСТОДІІ лля отр11ма11ш1 і збсрсЖСІІШІ /ШІІ ІІХ, П lТІКІІ,І( 
в11конання опсрзцііі, nов'яззн11х з біз11сс-Jюr·ікою, , .ншх як обробка 'Juмo1111ct11, •ш 
керування товар1111,щ nознціям11 [131, 
Предс 1-зnлсння ( \'іс,.,: ): в ідобр..~жас дан і корІІСl)'nа• 1у I а 1uGeз11еч ус 
інтерфейс лля nззємодії з корнс1увачс\І у випадку телегра,1 -боту 11рсдстаuле1111я 
nключас шабло1111 повіломлень, які відображають і11формаuію про ншарн, 
кошик, процес оформлення за:-.юв:1ен11я ·rощо . Взас,юдія 'J корне rувачсм. 
11а11рню~ад, обробка команд. ввод д.аю1 х тощо, також відбувасться у цьому 
КОІ\ІПОІІСНТЇ [ 13 ). 
Контролер (Controller): Ксрус взас,1одією між мо;\е.111ю 1.111редсншлс1111ям . 
Він 11риіім.1є вхідні дані від корне 1yua•1a, в11кон) с нсобхцні щї і оно1иює :-.юд1.:ль 
та 11рt:дсн1в,1сння. В контексті телеграм-бо 1) контро. 1cr обробляс 1<01\ннщ11, 
отримаНІ в~д корис·1увача, та 111щ1ю( відповідні дії мо;(с.1і і 01ювлюват11 
представлення [ІЗ]. 
Використа1111я архітектурної r1аращ11·м11 \ltVC у проr рамн ііі рсалі1ації 
телеграм-боту \Іагазнну р116а.1ьськ11х товарів ·1 .\Іожлиuіс,ю адміністрування 
допомагас покра11щт11 орrані1ащю коду, 1абсзпечус швидкість розробк11, 
пщтримку та ро·шшрення с11сте,нs. 
MODE L 
( 1 
UPDAТE5 MANIPULAПS 
! 
VIEW CONTROLLER 
USER 
кту на основі архітектурної пара:.,,11гми 
39 
ЧДl~ 231917.00J ІІ 'З 
3.1 4 Розробка базн даннх 
Розробка базн дани,'- є о. ~1ш~1 з основнн:-.: етапіu нр11 ро1робuі проскrу. В 
nредстав.,,еном) нижче схе:чатично,\Іу 01111сі баз11 л.t111нх викор11стооуєrься 
технологія Prisшa з прив'язкою до базн данrtл SQLiLe. 
Технологія Prisma використовується для забсзпечеНl!Я доступу до бази 
даю-ІХ SQLite та взаємодії з нею. Prisma надає зручні інструменти для 
юдеmовання бази даю1Х у вигляді сле-,,ш, а l'акож автомапrчно генерує код для 
остуау до даних (1 О). 
У даній схемі бази даних використовуються зв'язки між різними модеЛЯ1'1И 
відображення взаємозв'язків даних. Наприклад, модель User має відношення 
о моделей CartProduct, FavoriteProduct та Ordcr, що вказує на те, шо користувач 
оже матп декілька товарів у кошику, улюблені товари та замоRлення. 
Проєктування бази даних засноване на принципах нормалізації даних та 
ідповідає вимогам і структурі програмної реалізації телеграм-боту магазину 
бальських товарів з можливістю адміністрування . Ця структура даних 
зволяє ефективно зберігати та керувати інформацією про адміністраторів, 
рпстувачів, замовлення та товари. 
База даних містить декілька моделей, які відображають сутносп та 
аємозв'язкп між ними. Основні моделі включають: 
Admin: представляс адміністратора системи з полями id, name, 
passw01·d та token; 
User: відображає користувача з полями id, chatid, telegramld та 
відношеннями до інших моделей, таких як Ca11Product, FavoriteProduct 
та Orde1·; 
Session: зберігає сесію з полями id, key та value; 
CartProduct: відображає товари в кошику користувача з полями id, 
count, userld, productid та відношеннями до моделей User та Product; 
FavoriteProduct: представляє улюблені товари користувача з полями id, 
DIOl'ld, рrоdudІd,е-,двошеНЮІМИ до моделі User та Product; 
товару з полями id та паmе: 
ЧДТУ ~3 І Q І 7.003 ПЗ 
Product: :-.1істнть і11фор1щщію про товар з поля,111 id, nu111c, pr1ce, 
descriptio11. longDe:>cription 1а иідвошснш1,111 дu мuдс.~сіі Category, 
Productlшages, CanProduct. fa, oritePюducL та OrdcrProduct: 
Productlmage~: зберігає ,ображення 'tовзр) 'J nопя-.111 id. productld 1: .i 
imageUrl: 
Order: nрсдставляс зз,101шсння з полЯ\ІІІ id, t1se1·Іd. tt:legп.111,i.ogii,, 
numbcr, address. statt: та иіnношс1шm.ш до модепі \ Jser т,1 OrderProduct; 
13 
OrderProduct: відобра відображас. зв'язок між ззмоnлення" (Ordcr) 
товаром (Product). Бона прсдставляс. конкретний 1овар, який був 
додан11й до певного замовлt:1111я; 
На наведеному нижче рисунку 1ображеио l·RJ) (Eпtit)-Rclationship modcl 
diagram) спроектованої БД. 
·---• {" 
" ..І..  
L • ::..i. 
- .... 
....., .. ..,  ••• 
...,  
~ 
-· ••• 
--_,-._. - -·-~--.;.-  ..... 
-· .. - -:f=~~ 
_, - ..~ · 
,._,_. 
.. ~ 
F- f?','4 ~ ~-•  ~-= 
.i;. ..- . 
- --- -..-... -----
• '"ь  
-· --~ 
" -
41 
Ч,\\\ ~1')\7.00JIH 
_\ . t.5 ro,poбh:a '"'~РФ'-'"'·'' ~-:щш'-·1у,ш•111 
Ро1роб~-.,1 11нС"рфс11с, корне~) ашч., с t)J\ІІІІ\І I кJ~ю•ю1111х с1 1 111і11 у 11р<шсс1 
розроб~.:11 nро1р,1ч11ого ззоезnечешt>І. Інт.срtІн:і,с "ор11с1увзча н1111111чrн с,юсіб 
в·з:1с.,~олії між корнстувзче\\ і снстс,юю. то:11у ііо1 ·0 сфск п1 в11іс 1·1, 1н 'Jpy•11i ic I І, 
,,зюrь вел11ке значення для~ сшшної рС"злізації проекту. Голов1111м11 11р111щ1111nмн 
nрн розробці інтерфеіk) були зр, чшсть. 11ростотз в111юр11сн1н11я та есте 111ч111r~і 
д11за11н. Застосування I-П'.tvlL. CSS. Bootstrap тз JQLІCГ} ,1озвот1ло СІ'вор1п11 
розмітку та ст11 nіззцію стор1нок з врахува11няч в11мог проекту. а Т) peSci·ipt 
з::~безпеч11в т11n11ацію та полеrшнв процес розробки. 
В даному внпадку інтерфейс 6) в спроектований та розробленпй для панелі 
адміністрування. В телегра.,r-боті інтерфейс кор11СТ} вача був спроектованніr по 
пр11нщшу ергономічного та зручного розташування е;~е\!ентів так11х як кнопки. 
lнтерфе11с кор11стувача включас такі еле\Іентн як ~1еню навігації, форми 
ввод) да111rх, сп11сю1 товар1в та повщо~1ле11ь, кнопки дій та інші. Б)ла забезпечена 
можл11вість швнмкого та зручного взаоюдії користувача з спстемою, а та1<ож 
11ідображен11я з.~-.їуальної інформації про товар11, зачовле1111я та статуси. 
Розробка інтерфейс} користувача була викона11а з урах) ванням дизайну, 
що сприяло покращенню корнет) вацького досвіду та задоволенню потреб 
користувачів. Особл11ва увага була приділена адапт11вності інтерфейсу для 
різних пристроїв, що дозвол11.10 зручно користуватися снстемою як на 
комп'ютерах, так і на мобільних прнстроях. 
В процесі розробки інтерфейсу користувача б)ли враховані особливості 
предмеп1ої області, вимоrn до зр) чності в11кор11стання та естет11чноrо 
офор№ІОВНІ, Були 8ИІ(Ористані сучасні технології та підходи, що дозволилн 
створ"&'І'УЇТИВИО зрозумілий і привабливий інтерфейс. 
надана можливість легко переглядати товари, 
ПОВІДОМ.1ення та керуват11 
~. зручні форм11 вводу даних та 
спрИJІЮТь покращенню взає~юдії 
42 
ЧДТУ 231917.003 111 
У результаті розробю1 інтерфе1kу коr11с1ув:и:1 буJ10 носю 11у1 о мсв1 
с,ворення зручного. ефектнвноrо r:-i 11р11взбл11nоrо і11 r~pфcitcy, що доrюмап~с 
корпс1увачам легко та •шдоволення,1 nнкористов}' ва t н :1втоманпо11а11у 
інформаційну систем, магазин) р11ба.~1ьськи>.. товарів. 
Нижче в рисунках наведено ро1роблений інтерфейс користувача: 
(IJ • Пробоа 
~ Carpflsher's Parad .• 
ilfP''\11e', і)с ,di, IJ< () 
0 ,. . 
о (nosrщeioo 
8 1ф о10 
.,о...  
&ШІІО ..,  І IHIL'l)t<el 11,ІШ.tІі, (~rplt>hrr's Parюl1t1 М>І p.JIJ о .7) 
б~ч,,м 1,1( 1У1 ІІОІОІІАОІ10...ОП~ aau n1д16р.11~ н.ІЩ)~Щt 
1,11,нороnоеоІ рн6оІІОІ,',j H~w uaraJ~н np0(10Н)t 
WІІрОІ1ІЙ ~ іІІkН«О рибо,1ОІНОf0 СІІО~tнНІІ, 
~ -,АМІІІ, ІOl)'WQ'.~tкy~ епюро,t,І 
~111О.1101м1uО10. 
ІІш~1ІІQІІОІО8ІАОІ1ОІІОІ1-ПОІ),ІДМІІ 
~ІЦОАС)моруnрІ.-О~НІІТ~ 
.м.p 6.i.,l.a,l,i...l,i!lplllplaif~J'•II•D!IpOlioll&/Y~tpuo,oPllftllt _, 
.-...........k lJJJ'll"'ll,,.,auoro 
І j filr' І 
43 
ЧДТУ 2319Ії.003 ЛЗ 
т 
t:J 
Коропов1 котушки 
Коропов1 sуДJІища 
ЖИЛК>1 
Рисунок 3.6 - Категорu товарів магазину 
Про6оr~ х 
0 (] 
а СІ,оа;;. .... с 
11,&p~<W-ropio,,...,..,.,,..~M(Pro­
...A lormsS.C ),І 
.~...P. 1r,o,.l.o,,j_l Fи.І_см,_ R№l,l,'r,o.-.,_,,,....,,,,._,. ~., J_o,­ 8 5ФО,О 
.--(/fllКlO~IN~~-~,.,,,,,..,,
..........." І"'. ., .., ...,,_,..,,,.,..-Q'l«"I ,..,,,,....,&i,-,о­,, 
.,.....,po,cм,t,OJDІw(nюe,fll•• ClilJ іІ..~ •;!, До:-"r'І ,::,rp 
....,..-.,0ior• о....-rІООІІІ._~ 
__а ,,,а/. ..., ._.._. .. .,,,._. 
••••W....,.._., ... 1,1
_..........,.....,............. ...... 1 
........../ І.І_І.ІІ.JО_М І _І  І. ._,-.,..
_., _-_-_-.~.,,.-,,,,. 0 "'"' 
,.....,...,..-.-,о- - е 
.....w..,.  ...,. ., ..., 
44 
ЧДІ) ~'1917.0011\і 
І 
І І ~.., fl 
~І-ЬcSr~tic......,._..~~:. :..;.:..,.l"Ollllip... AL,,,.s.t)•t . ___.,~ ,nu,_,..  о ~ С' 
~__.... uc.c,.....,._ •~. .... uer......,.~ t,i~..-
~,. ....--.,.i!Q8......, ~ ~• ,-.on • и 
~"IO.IOr...-S.t,c,.~~~~i ~III в 
~~а,,,..,.......,~__,~ + -:,;;,,, 
.~...~...0.,.,..~....,,._.,._.._d_ ~ --~. . ~ ~з.-а­ •f2.. A:.&,tol&el v'r"' .. 
-~~..1..~..~~..,•._--f, _.-:v_0.._:.0.,.и~  f ;-►._.7(~ ...........,,,  
) 
-~~.,
-а....,;
~~,->=-!.-~~cw-...:i~~ 
:,.по..,-.,)--...- ~ 
.....,_~,-.6сн~а~ .. о 
CD 
Рисунок З .8 - Кошик 
~ 
~teioix- Ці~ 
КLip00)6![G:j.:;D ?100 
r~, tOГ(.IJ' 1'1' 
~~, i~•, .a 1JO.: 
ЩюооеаІJ,· ~а шо 
ЩІО,'\ЖJ r1,:A1t:,,1 ~620 
(oP(n)!; r1;;. ..а = ,! 
Ж,Jо, ~ 
х..,~ г: 
tf~p:!!.;J 00".а.1~:ІрІ! s,~ 
~OOIWIIOfl' 
ЧДТУ 231917.003 ПЗ 
СnисоІС. тоо.1р1а ., У" 
1D Лоr1н Hou@p ,..,....,.,у 81рІІСІЬ 
~ 13un,13 •ШбзС""' ,:7fYJ 
і 
~ 
2. ,Juml3 -~с-__J  1'870 
і 
Рисунок 3.10- Список замовлень 
З .1.6 Опис розроблених чод) лів та їх зв'язю~ з інШШ\.1.И комnонента.,1и 
розробки 
Панель ад~tіністрування: 
Призначення: вебпанель адміністрування призначена для керування та 
управління маrазино~ рибальських товарів. Вона надає зручний інтерфейс для 
додавання, редагування та видалення товарів, керування за\t0вленнями, 
налаштування параметрів бота та інші адміністративні функції. 
3 'юки з іншими компонента~ш: 
взаємодіє з бекендом через АРІ для отримання та збереження 
нання адміністративних операцій тощо. 
може використовувати CSS та Bootstrap для стилізації та НТМL для 
відповідає за обробку запитів панею 
виконання бізнес­
на додавання, редагування та видалення 
фуНІСЦЇональність для телеграм-
ЧД Т\' 231917 .003 І ІЗ 
про товзри. за,юв,,тк•нн.я тз інші дзні. 
Бекенд надзс АРІ м"Л .я п ЗНСЛІ.  адм1.1 н.с трувn1111я . щоо- Іа\r). СЗІІС.:'111111 11 t(ІІ t.IOJI•I I()  
з фронтендо~1. 
Бекенд також взаємодіє з rс.1еграм-бото,1 чсрс 1 'I'ckgгa111 АРІ JІJІЯ обробкн 
повідо.м  .1 ень . відправки сп ОВІ· ЩС.· ІЬ нро зn,ювЛ~НІІЯ Т'.1 ·І ІІШІ·  011ерац11··.·  
База данпх: 
Призначення: База даю:, в,1користовується ..щя зберігання 1нформаuії про 
товари, замовлення та інші дані. необхідні для роботи ,rагазину р11бальських 
товарів і телеграм-бота. 
Зв'язки з інш1L,1и КО:\fПонента~1и: 
База даних забезпечує зберігання та доступ до даних, необхідних для 
панелі адміністрування та бекенду. 
Бекенд взаємодіє з базою даних для зqитування та запису даних, 
забезпечуючи потрібну функщона..rrьність. 
Телеграм-бот може отримувати дані з бази даних для відображення 
інформації про товари, обробки замов.:1ень тощо. 
Телеграм-бот: 
Призначення : Телеграм-бот забезпечує взаємодію з користувачами, надає 
можливість переглядати товари, робити замовлення та отримувати сповіщення 
про статус замовлень. Він також виконує адміністративні функції, такі як 
сповіщення адміністратора про нові зачовлення та керування налаштуваннями 
бота. 
Зв'язки з іншими компонентами : 
еrрам-бот взаємодіє з бекендом через Telegraш АРІ для обміну 
еИНJІМИ, отримання інформації про товари, замовлення та виконання 
функцій. 
~ ВВІСОристовувати базу даюJх для отримання та 
и та замовлення. 
пені для забезпечення функціональності 
рибальських товарів з можливістю 
47 
ЧД І'\ "3 І 917.00J І ІЗ 
Здмініструв:шня..  Вонн азасІ\ Юl\ІІОП, 1\1.1 '»,. COl)OIO. ІІШЩЮІ І, ДОСІ)'ІІ до 111:обхі111111х 
дан11:-. та функцюнальності 'та дозволяюrь ефсю11в1ю 1<cpy11ar11 мп1а1н11ом ,·n 
забезr~еЧ,)  ватн з. ручне взаєм одн· о з ~,:орнст) в,1ч,1м II чсрс:J н:лс, рам-Gо 1. 
Зв язки м,ж компоне нтами МОЖ)'І'h 6) ТІІ 11.JCI уп1111м11: 
Панель адмініструванн я вз. :1сl\юд1. є з беке11дом •1ерсз АРІ за1111111 . І te 
дозволяє адміністраторам зд·ш ~с нюва11.t  р1.1 нома11іт11і дїї, такі як додава11ня, 
редагування та видалення товарів, керування замов.:1с11нями тощо. 
Бекепд взаємодіє 3 баз ою дан11х д:1я збереження та отримання .ш формаUІІ... 
про товари , замовлення та ·1 нш1· даю,•  нео 6 х.щ н1. лля роботи 
магазину. Це дозволяє бекенду 811ко нувати р1· зномаю· тю·  оnерац1.1..  з даними та 
забезпеqувати актуальну інформацію для панелі адміліструванпя та телеграм-
бота 
Телеграм-бот взаємодіс з бскендом qсрез Tclegram АРІ для отримання та 
обробки лоnідомлень, взаємодії з користувачами, відправки сповіщень про 
замовлення та інших операцій. Телеграм-бот може також використовувати базу 
ДйНІІХ для отр11мання інформації про товарr1 та замовлення, яку надас бекенд. 
Та1са арх ітектура дозволяс розділити функціональність ма1·ази11у на окремі 
модулі , що забс шсчує зручну розробку, масштабованість та підтримку. Па11ель 
адмініструва1111я , бскенд, база даних та телеграм-бот працюють разом, 
створюючи 1ювноцінн11й та функці ональний додаток для магазину рибальських 
товарів . 
3.2 Тестува11ня снстем 11 
3.2. І Модульне тес,ування 
Модульне тес,ування є важл11в11м етапом в процесі розробки програмної 
реалізації телеграм-боту магазину рнбальських товар1в з можливістю 
іністрування. Цей етап спрямован11іі на персвірк) окремих модулів або 
з метою виявлення та виправлення помилок на ранніх 
ах розробки. 
Під час мо.ауJІЬИОІ1) тес'ІУвання були проведені наступні дії: 
.,.,.,..... С8ІІ'ІІІІІ 11& модуnі: Вся програмна с11с·1 ема була розбита па 
48 
ЧДТ) 231917 .003 113 
окремі модулі або ко,- 1 понс11т11. як1. ,10ж11а тс\.'1уоа 111 окrсмо . І tc но111011111ю 
1оссредит11сь на кон к.р е1 НІІХ.  фунюн.я , та J\ОГ_Щ .І  кожного МОД)'JІJІ; 
- написання ,юдульm~ х. тесn.н : Д:1я кож1101о ,ю:J.~ля бул11 1шп11са111. 
спеціальні тестові сцс на. рн..,.  я.ю_. 11ерсs1. рял11 прав11ль111с I ь робо I и ц1,ого 
модуля. Тести вклю чал11 в себе р1.з ні вхідні да111 та оч1_ку ва111. 
рсзультап1, що цозволяло псрс~,;онатись у кор~ктносrі роботи 
кожного ~одуля, 
ВИІ<ОНШ!НЯ модульних те<. пн: І Іроведення модульних тес, ,в 
вю110чало запуск •~естов их. сцс11ар1..1. в та анал1.з  отриманих рСЗ)-'ЛІ•тап•в . 
Кожен мо,~улr. був протес1оваш1й на різних вар1антах вхідннх даних 
для переконання у йоrо правш1ьному функцюІІ)Ванні; 
в11явлс1111я та виправлення по:-.шлок: Під час мо,1уль11оrо rестування 
булн в11явлс11і деякі пом11лю1 та 11сдолік11 в робоп окремих модулів. 
Ці помш1к11 були в1111равпс1 1і шляхом ро1робкн та впровал.жсння 
11собхію111х змін в коді: 
Модул~,11с тсстува11 11я до1вол11ло впсв111п1tсь у коректності роботи окремих 
~~одулів 1 1ро1 рам1юї с11стем11 та в11яв11111 та ви11рав11111 пом11люt на ра1111іх етапах 
ро1ро61<11 . І ~с lїІр1~яло 11 ідв11 щен11ю як()сті та щ1л.ііІності прогrамної реалізації 
н.•лс 1 рам-60 1 у м:н·аз,шу р11ба111.сью1х 1ов:.~rів з ,южшвістю адмі11істр)ва111н1. 
Моду;1 1,11с тсстуnшшя до·шо1111ло в11яв1111і та випраюпн помилки ще до їх вшшву 
но роботу с11стемн в цілому. 
Н11жче наведу прикладу одного 3 ро1робленнх ~юдульннх тестів для 
тестування сервісу авторизації для панелі адміністрування. 
import { AuthService, AuthRequest } from './Autl1Service'; 
І Мосk СІІ.І81 es or import as necessary 
=> ({ 
49 
ЧЛ.ГУ 231917 .UОЗ І ІЗ 
} elsc { 
thrO\\ ne\\' Errot·('Iпvalid Tokc,1'): 
} 
}) . 
sign: jeSl fn(O ;> 'generatcdTokeв'), 
}) ); 
<.iescribc('Лutl1Scf'\.ice'. () > { 
descпbc('auth()', () => { 
it('s\1ol1ld саІІ next() if token exists .iпd is val1d', О --,. { 
const autl1Scrvicc = ne\\' Лut\1\ег, ісе(): 
const rcq. !\.uthRequest - { 
body: { token: 'validTokcn' }.  
qt1c1-y: {}. 
headers: { 'x-acccss-tokeп': " }.  
payload: 11t1ІІ, 
}:  
const 1·es = { status: jest.fn(), send jcst.li1() }; 
const next = jcst.fn(); 
authService.auth(req, rcs as any, next): 
expect(next).toHaveBeenCal Іеd( ): 
expect(res.status).not.toHaveBeenCalled(): 
send).not.toHaveBeenCalled(); 
ЧДТУ 211917 ООЗ ІУ3 
body: { \. 
query: {}. 
headet'$: { }•  
payload: null, 
const res { status: jcst.fnQ. scntl: jcst.fn() j: 
const next = jest.fn(): 
authService auth(rcq. rcs as any, ncxt): 
cxpect(next ). not.toI laveBeenCn l lctl(): 
expect(r es.stзtus ).toHa\·eBeenCal lcd\\ і th( 403 ): 
expect( res.scnd).toHa\·eBeenCa\lcd\\їth('Л token 1s required for 
authentication'); 
}) ; 
it('should retum 401 if token is in,·alid' . () => { 
const authService = пе,. .·  Autl,SeГ\ ісе(); 
const req: AuthRequest = { 
Ьоdу: { token: 'invalidTo ken' },  
ЧДТУ 231917 003 ПЗ 
expect(res.status).toHa, eBeenCnllcd\\ itlt(40 І); 
expect(res.send).toHa, eBeenCal\ed\\ ith('Іn, ulid Tokc11' ). 
} ); 
} ); 
describe('getJwtPayload{)', {) => { 
it('should retum the pay1oad if it exists', {) => { 
const authService = new AuthScГ\·icc(); 
const req: AuthRequest = { 
Ьоdу: { }. 
query: { }, 
headers: {}, 
payload: { user_ id: І, name: 'John' },  
}; 
const payload = authService.getJwtPayload(req); 
expect(pay108d).toEqual({ user_id: І, name: 'John' }); 
payload does not exist', О ;:::> { 
e;>.pecttpaylond).toBcU11~kti111:d( ): 
\'  )·.  
\'  )· ' 
}) ; 
J"' -?- ·'-> Інте rрац1· ~и пе тестувnнt1я 
У рамках даної бакалаврської робо1 11 було проведено інтеграційне 
тестування програ1чноrо комплексу "Теле~-рам-бот магазину рибальських 
товарів 3 .можлив~стю адміністрування". Інтеграц,йне тестування - ue фаза 
тестування програмного забезпечення, []ЇД час якої окре~і модулі проrрамн 
комбінуються ra тестуються разом, ) взасмодіі [ 14]. Цей етаn був виконаний з 
мстою перев1рки правильності взає\ІОдії різних компонентів системи та їх 
інтеграції, забезпечуючи стабільну та над1йну роботу програмного комплексу 
Під час інтеграційного rестувант1 було 11ровсдено наступні дії: 
І Взасмодія з Telegram АРІ: 
Було перевірено, чи бот правильно зчитує та обробляс повідомлення 
кор11стувач1 в, відправляє повідомлення, керус к..1авіа1) рою та кнопками в 
Telegгain . 
2 Інтеграція з базою даних: 
Проведено перевірку збереження та отримання даних з бази даних. 
Переконався, що дані про товари, ·шмовлення та користувачі коректно 
додаються, оновлюються та видаляються. 
З Взаємодія з адміністративнш,1 І\ІОдулем: 
Перевірено можливості адміністратора додавати, видаляти та редагувати 
товари, коруаатизамоВJІеННJІМИ та отримувати 1віти і статистику. Підтверджено 
короmІУ .,.,_с: .,"',с=; 'овальності адмін істративного ~одуня. 
ого досв1ду: 
відображення інтерфеі1су користувач..~, 
ІСЛавіатуру. Переконався. що корнс1увач 
53 
ЧДТУ 23\Q\7 003 ПЗ 
5 Тест) в:шня вззсмодії \\ЇЖ ко\\nо11е11та\111 : 
Вnевннвсся в прав ИЛЬНІ\·t- 11ередач1• ДЗІНІХ та ПОВІД·O t.,І,ІеІІЬ МІ· Ж р1·. 3НИ~Н1  
,-о,111онентам11 с11стем11. Було перевірено, що функціональність коректно працюс 
то дані nередшоться без втрап1 або спотворе11ня . 
l І ід час ІІІтеграційного тестування буно виявлено і в11nравлено насту11ні 
проблеми: 
внннкла пробле\іа зі зчІІТ) вання,1 11001 10,шень 1 Telegran1 АРІ, що 
внл~шма па шв1щкіс1 ь 0611061-:н поnідом'1снь. Було внесено з,1іНІf в 
алгорнтм зч1пування лля nоnіпшсння nродукн1вності; 
ВІJІІІІКЛІІ конфлік-rи ,1іж деЯЮІ\Ш !\ІОД)ЛЯМІJ бази даних, що ВИІ<J\Щ(алИ 
пом1111ю1 nрн збереженні дан11х . Ьуло вир1шено шляхом в11есе1тя змін 
до стру1uур11 бази даних та :\!одулів n1ас..,юдії з 11е10; 
Рс1ул~,тат11 і 1пеграц1і1ного rсстуuан11я сnінчать про успіш11у інте1·раці10 
ко~111011с11 тів 11рограмtюrо комплексу та їх правильну взас..,1оді10. Виявлені 
11роб11сми булн в11nравлені, що дозво,111ло забезпечити стабі 11,11у 1а надійну 
робо1-у ripo1 pt1м11oro комплексу. 1111 с111ащііне тестування підтвердило 
11ід1юнін11ість розробленої с11стс,111 вн,юrа,1 та ц1,1я,1, поставле11ИJІ,·t у 
бака:ншрс1,кіЇt роботі . 
3.2.3 С11стсм11с тсстув.н111я 
Снстемне тестування r важл11в11,1 етаrю..~ в процесі ро1робки про1-рам11ої 
реалізації телеграм-боту маrаз11ну р11ба.1ьськ11х товар1в з можлив1стю 
адміністрування. Цей етап спрямовзш111 на перевірку функціональності, 
надійності та відповідності вимогам систс,111 перед її впровадження,1 ( 15). 
Під час сис~емиоrо тестування було проведено наступні діі: 
ості: Були перевірені всі функції телегра,1-боту, 
т 
товарів, додавання їх до кошика, оформлення 
записом користувача та ад~~іністратора. 
вюдними даними для переконання 
на стабільність та надійність 
54 
ЧД1 У 231917.ООЗ ПЗ 
снсте,ш Бо1 був 11іддано на 
вантаженню, nключnюч11 пел11ку кільність 1ап1111в та 
о!ІНОЧЗСІІНХ кор11с n·· 1щчі В • дJ • • 
~я nсрев1ркн iioro відnовіл110С1 і напа11тnже1111ю ·н1 
здат11ост1 опрзць()вувn ги 'Зап _ , 
ІtТІІ 6 С.: І JООІВ. 
Т сс-туnзн.11я відпоnілно ~ 
1.: 11.  внмt111lм: Буно псрс11іре1ю, •111 ·1адовольняс 
програ."-н1а рса.,і-зація теле гра,1--001:.  вс1. м ш1моr-:1,1, 1щзна•1е1111м у внх1· дю1х 
слец11фікnціях ПfЮеІІ.Ї)' · Ко ж-нn внмоrn t-))'Л,1 11epc.:uip1:11a 111 1робnе1ю переко11ан11я. 
11(0 вона 8ИКОІІ)'ЄТЬСЯ 8 nnr·o rpa•t"1' 11·1~, \~: ІІСІСМІ•  
Після 11ровсде11ня сист емноI О тсс-r:·вnння бу1ю ВJІЯПЛСІІО ЛСЯКІ.  І\О~ІІІЛЮІ та 
пробпемн, які б)·ли в1шраnі•1 е НІ·  в 11роцсс1·  пода..'1ьшо1..  розробки . В шп· о\І~, с111:rем11с 
·,ес rуоання nщтвердІtІІО прав11т,11ість I1poei-,-) ва1111я та реалі занії 11ро1 ра\ІІЮЇ 
с11с ~ еми Вс, функції 601)' та r1а11елі адмі11істр) н:шня бущ1 успішно протестовані 
і лідтвердже110 їх працсзда ~ніс rь. Сис I сма в1u~ш1ла висок\,'  надійніс1ь ra 
с rабі11ь111сп) 11ід час 11ава11тажс11ня і 1біпьше11ня обс я І)' користувзчів. 
І1ро11сс СІ!СТСМНОГО TCCl ування ІОПО\ІЇГ ВШІІН\ТІt га )'С) 11)'111 рі щоманітні 
1юм11лк11 , яю можут1. в111шк11ут11 11ід •1ас робо111 бо1 у. Тес 1> н з1111я щ1ло З\ЮІ-У 
·и1бс·тсчип1 корскт ну роботу функцііі, ·1аr1061гп1 в11току дант-:, підтнерднн1 
11ра1111ль11с вінображс1111я і нформації та ·1збс1пс•111п1 вітювідність c11crc\111 
внмогам та очікуванням користувачів. 
У рс1ультаті системного п:стуuа,шя було шдтвсрджсно, шо nрогра\111а 
реалізація телеграм-боту маrа11111у р11ба.1ьськ11х товарш з :-.юж:н1в1с1 ю 
адміністрування є функціональною, наді ііною I відnовідас всі\І в11моr11м прос~-їу. 
ЦеЯ етап тестуванНJІ сприяв впевненості в тu:-.1 у, що розроблена с11стсмз ·ща111а 
ефективно функціонувати в реальном) середовищі та задово;11,ня111 nотрсб11 
системного тесТ) вання ф)'нкціональності 
55 
чдТУ .231917 003 11 J 
-l(o-,yu.-a ......._. o.a.m., C1i111a,- В..с' С&-60 
Oilv8e'Ct.s:oltlrod--.... ~~~.J~ 
WOl'flD8Ut;• ... JiSWI, lpO~;-n:t,1;,tw Я~"}І( ~: 
~•~8,QO..,..ac У•~ с~~.-
.., 8IOiu«J f~--.:i. -.wu -..СЮ~ .JP06,.1t~ ......~  
РЦр .... • 0~..3'~~......,, ... ....,,.. ~ 
-..о,,-:= м М-=-7111:с:ра!ІІС. lfllC'I: U' ac;,.-rptt""...le aft>cr:-,,ooN,IO 
,.а...-. 
С-.•1 
Рисунок 3.11 - Тестування мож:rnвості додавання товарів в кошик 
~·, 111МІІі!І8 
__ __ ,_. .. ..... 
_~с_._- ... -_-._... ..~ , ....,.,.... 
- ,..Т WSlf/..........,,__.....,.,.......~ • 
,..,._,,_у_,,_...,. ,.., .... 
_,.,n __, .......,.,,,._ц,,о .., ~ 
-,..,.,.~_...,.. .-  ----·--·­
- ~_,,...... 
р11~~~ функціональності кошика 
56 
'IJt І У " І І (J І 7 ОО і 11 J 
Рисунок З. І З - Тес,ування можливості оформлення замовлень 
11 
і обробки замовлень в панелі 
Ч)\Г\ )JІЧ\7.<ЮЗ ІІ'J 
~1 ~тування - фін3.Льннії стал 1е,--·1 \• ,~ , , r, • м ·1а11ускnм 
-- -- J 1"'1 11, 1 IIро1 раІ\11I IIcpc;t 11у 11 1 1 1 11 111
[І 6] Воно включає насТ) nні ст:.1лн: 
Перевірка ф) нкціональності: 
Внконано тес-n. ван11я вс1· ,. ос ,1 • ~ 
~J ' НОВ}І(ІХ ч>УІІІ<ЦІІІ телеrрuм-бо·,у, ·,акнх як 
відображення каталогу товарів, додавання товарів до кошн ка, оформлення 
зш.ювлення, перегляд та редаrування улюблених товарів тощо 
Переконався, що всі функції відповідають очікуваному rrовсді11ці та 
працюють без nом1шок. 
Перевірка забезпечення безпеки: 
Було проведено перевірку системи на наявність потенційних уразливостей 
та забезпечення захисту від несанкціонованого доступу. 
Переконався, що всі дані користувачів та транзакції захищені від втрати, 
викрадення або несанкціонованого використання. 
Тестування продуктивності: 
Було проведено тестування завантаження системи та її продуктивності при 
великій кількості запитів та користувачів. 
Переконався, що система здатна ефективно працювати лід навантаженням 
і забезпечувати швидку відповідь на запити користувачів. 
Тестування на різних платформах: 
Було перевірено сумісність проrрамноrо комплексу з р1зними 
операційними системами та пристроями. 
Переконалися, що система працює на різних пристроях, таких як 
комп'ютери, смартфони та планшети, без проблем та забезпечує зручне 
nм:ІІVІ~.-1 інтеграції з іншими системами: 
.........і рпІо інтеrрацію телеграм-боту з іншими системами, 
шmозами, системою управшння складом, системою 
правильно та співпрацюють м1ж 
58 
ЧДТУ 23 І 9 І 7.003 І ІЗ 
Тес1) вання користувацько~·о ."\осuщу : 
Було проведено тестування з в11кор11с ~ш111я~1 спе11іал1.,1ю 11іJ1rотовJ1с1юго 
тестового rpym1 користувачів. 
Оцінено зручність їнтерфеіісу. зрозуміліс~ ь нроцссів. шв 11дкіс1 ь реuкнії ·1 а 
загальне задоволення від внкорнс1ання теJ1сгра\1-боту. 
Тестування на реа.льн1Lх даних: 
Було використано реальні дані про товари. замовлення, користувачш Іа 
і11ШУ інформацію. що використовується ) снсте~1і. 
Переконався, що систе\tа правпльно обробляс та збері1·ає даю та 
забезпечує їх консистентність та ціпісніс ,· ь . 
Тестування безперебійності: 
Було проведено тестування стії1кос1 і ·г.1 відновлюваності системи в раз~ 
помилок, відмов апаратних засобів або інших непередбачуваних с11туацій. 
В результаті прніімальноrо тс.:стува,шя було підтверджено, що 11ро1рам11а 
реалізація с стабільною та функціональною. 
3.3 Пр11клад11 впровадже11оrо nporpa,1 11or·o комплексу 
Впровадження цього ко~шлсксу мас на меті розв'язання пост.1влен11Х 
завдань і досягнення запланован11х рсзультаrів. 
Оцінка повноти вирішення пос 1 ·авлсю1х завдань: 
Впроваджений програмний ко~шлекс успішно реалізує функції, необхідні 
ДВІ фуНІЩЇонуванНJІ телеграм-бота магазину рибальських товарів. Користувачі 
перегЛJІДати каталог товарів, додавати їх до кошика, 
перегЛJІДати свої замовлення. Ащ-1.іністратори магазину 
ІІ!.'І'nvuевтів керування товарами, замовленнями та 
ш враховуються в програ1'mому комплексі, 
ькі товари та їх характеристики. 
'сть оновлюється в реальному часі 
та зарубіжних авторів, 
► 
ЧДТУ 23 l 9 l 7.003 ПЗ 
nроrрамнш1 комплекс демонструє схож11Гt функціонал та ефе1<т11оність . При 
uьо~І)'. вттроваджент1 комплекс мас свої особливості, що відповідають 
коfІкретним nотребам маrазнну р11бальськuх товарів та йоrо користувачів. 
Впроваджений лроrрамнт1 комплекс підтверджує високу достовірність 
результатів шляхом інтеграції rшдііїн11:х джерел даюrх та використання 
3J(Туальної інформації про товари. Це забезпе•1ує коректну інформацію про 
11аяs11ість товарів, їх характерастшаr та ціш1, що спри.яс точному відображенню 
стану маrазнну для користувач~ в. 
у порівнянні з 1сrrу10ч11мн nрограл11-111м11 рішенням11 для магазинів 
р~1бальськ11х товарів, проrрамн11ії І<омллекс відрізняється своею спеціалізацією 
,ia 1'елеrрам-бот1, що дозволяє забезпечнтп зручну та швидку взаємодію з 
через популярн1111 ~,есенджер. Також, можливість 
uдмі11іструво1111я дозволяє ефе1,.ї11вно кер) ват11 товарамп та замовленнями, 
с11рощ} юч11 процес управління магазином 
Загалом. опровздженш1 програ:-.1н1111 комплекс успішно вирішує поставлені 
·1:11щш111я і шщас Зр) •1ю1fі та функціонзльн11fі 1нстр)'\1ент для організації маrазину 
р11бзльсью1х товарів через телеrра\1-бот. 
Ч;\l ~ ~119 І 7.003 ПЗ 
ВПС110RКП 
у процес~ роботи nро1р.1мно реалі·юва110 rелеграм-бот мп11пнну 
р11бальських товзрів з можлнвістю "щм1ніс1рувзння Лосліджено предме1 ну 
область, визначено основні вимоп1 110 снстсмн та проведено а11алі1 аналогічтrх 
рішень. 
Проектування про,·рамноrо забезпt:чення включило розробку структурної 
с:(с~нt, :шал,з та моделювання діаграм дія ~ьності, д1аграr.ш кл:н:ів, діагра:-.ш 
взаємодії, а також діаграми розгортання. Ці інструменти доrюмаrли уявити 
снстему в цілому та встановити зЗJ1сж11ос1і \1іж компонснтам11 та забезпсч11111 їх 
83асмодію. 
Розроблено програмний ком1111еr<с, лк11й включас панель адміністрування, 
бекенд на основі Node.js та Exprcssjs, базу д::ших SQl,ite з в111<ориста1111ям ОКМ 
Pristna тn 'І elegram бота, використовуюч1r Grar11my Реалізовано фу11кніо11ал 
1амовлен11я товар1в, керуванням корз1111ою, додава1111ям улюбле1111х ~опарів l'a 
обробкою замовлень. 
В процесі ро·зробки бу ш викорнспші такі тсх1ю11оrії як І ІТМL, CSS, 
JQuery, TypeScript, Prisma та TSyгinge. Всі ком1ю11е11т11 системи буJ111 і11тегрова11і 
та 11рон~стова11і з в11користа1111ям і1пеграціі11111х та пг,11іімат,1111х rсстів, що 
дозволило перснір11т11 nрацсздатніст1, системи та відновід11іст1, в11мо1·ам. 
Ро1г()ртання програмної системи на апаратних 1асобах було успішно 
здійснене, забезпечуючи доступ до с11стсм11 з будь-яко1·0 пристрою, 
підключеного до Інтернету. Кпієнт-сср13ер11а архітектура спстем11 1101во.1яс 
ефективно обмінюватись даними між кор11СТ} вачами та адміністратором. 
У результаті виконаної роботи було досягнуто поставленої мети -
розроблено та уопішно впроваджено про,·рамний комплекс телеграм-боту 
~ ~ЬКИХ товарів з можл11 вістю адміністрування. Система 
.,о6тУ, забезпечуючи зручний та інтуїтивно зрозумілий 
і функціональні можл11вості адміністрування. 
6 
ЧДТУ ~J\917.003 П1 
р~алізаuія програ.\Іноrо :ко 11\ПЛ,~ К.С ) 11. \ДПООІ.Д ОL: ІlО\;(f\ІІ ІСІІІІМ 1111моrnм то 
6111 1811:~:ася ефеt-.-тпвною "•  зада чах автомап, заніі ,1 1юuсс) Jn"юш1с11ня r., оGробю, 
roв зрів. Кор11стувзчам нздаєт ься 1'-ІОЖЛІІВ.І СТЬ Зр) 'ІІІОГО ra ШВJІДІ<ОГО офорМІІСІІJІЯ 
..,,Q_м ов.т~ень через шгерфейс -r-e..,erpз11'. 1 -б оту, 3 :1Д\•І І•Н ІСТра1орам - JР)'ІШШ··  доступ до 
)ІІрзвл.інвя га ана.'Іізу да.ни"' чеrез -анель адмі11іс1рува11ня. 
Додатково. влровадЖення інтеrраційних та пр11й.,1а,1ью1х тсст~в 
п:іJІтвердило коре1'..ність роботи npoгpa.,rnoro ко\111.1ексу та відповідність його 
фрn<піональності вимога..'1. Використання таких rестів дозво.11то виявити та 
в~ffІравити можливі пробле~m та по,1и:1ки, що сприяло підвищенню надійності та 
ЯJ{ості розробленої систеl\.m. 
У рез)'ЛЬТаті аналіз) резупьтатів впрова,1женоrо програ,п-юго комплексу. 
виявлено, що він відповідає постав.;ею1\1 ви-.юrам та ефективно виконус свої 
функції. За результатами тесТ) вання бу.10 підтверджено коректну роботу всіх 
модулів та їх взаємодію. Дана реалізація те.1еrра.,1-боту маrазJПІ) рнба.1ьських 
товарів з можливістю адміністрування ~юже бути використана в реальних 
умовах та принести користь як кшєнтам. так і адміністратора\1 магазину. 
Програмна реалjзація телегра.,t-боту магазину рибальських товарів з 
можливістю адмjністрування є перспе1'."ТИВНИ.\t напрямом в сфері електронної 
комерції. Вона дозволяє забезпе'ІИТИ зручний та швидкий доступ до товарів та 
послуг, пі двищити процес зачові1ення та обробки через телеrра~1-бота, що 
забезпечує зручну та митrєву ко~1унікацію з клі єнтами. Така програмна 
реалізація сприяє покращенню взаоюдії ~1аrазину зі своїми клієнтами, 
забезпечуючи швидку відповідь на запитання. широкий асорп1 ,1ент товарі в та 
зручність процесу замовлення. 
Під час про.ведеВВJІ проектування та розробки програ,\1ного комплексу, 
було зверН)"Ю; еми безпеки, такі як захист персональних даних 
вційниХ вразливостей систе~ш. Застосування 
є забезпечити конфіденційність та 
62 
Ч, t 1 \ "'1 І 9 І 7.t )t) 1 І Н 
/ln.)rp:t:\111,1 рС;\J1і1зція 1',..: Jlc..'ГJ),1\J-•t)()І) DJЩJIІl\1 Кр1ІІ(()\І ІІІІІІJ ),'І  І>І КУ t · ' )' 
:,11rt"І:ІТІІ1:щії Т3 RДOCKOH,\JlCI\IHl 11р1ч1ссі11 CJІc..•i,; Іf'ОНІЮЇ 1,01щ•р11іі'. Во11а ло ІІЮJІІІ( 
\І:JГОЗІІІІ)' пр11Асrн) 111 61.nьшс кліt-11rі n. 1n6c ІІІС'І) Ю'ІІІ їм 1J)) 'ІІІ k 11, І ,І 111u11дкіст І, 
1)tX' І~ Гt.)9)'ВОІІІІЯ. І акож. с11стс,1:1 :}J\\tЇШС1р) 1101ІІІЯ ДОЗU()ІtЯС' сфСІ<'ПІІ1110 у11раІ.ІJІІІТІІ 
ТІ! ко11тролюватп продажі, :шміз) в:1111 з,шовлс1111я га з11іііс11юuат11 необхідні 
коrе"ції д.nя оп 1їІ\Іі1ації біз11сс-11роцссіn. 
8 ni.'{CY\1/\). nрограмв:.1 реміз.щін т,~.нсгр,ш-боТ) мап1з1111у р116,1Льсь~,;t1:\ 
товарів З МО)h"ЛІІUІСТІО ад,11111струв:11111я \С\ІОІІСІ рус nсрсПСІ(І 118}" 11 рОЗDІІГКУ 
t•лекrрон11о·~' комерції. Вонз ззбез11ечу( 1р) чІІ) та ефскт11в11) платформ) для 
:.Jзмоnлення п1 обробка товарів. спр11яюч11 r~окраще1111ю 11·1ас,10дії мага11 1 11у 3 
кліснтамrr. Подальші nокрзще1шя га роз11111ре1111я Ф> нюtіональності \rожуть 
сnрнят11 лідвнщешrю сфе~,;111в1юсті 1а 11:011куре11тоспромож11ості \1згаз1111у 13 
сучасному слектро11110"fУ бізнесі. 
ЧJ \ І , , :!З І 1) І 7 .003 І Н 
ІН t( 0 1{ в а ІІ(ОР ІІС 1',\ 111 ІХ )01\l ; P І •~Jr 
1 re~t-dгi,c11 dc,clopщcnt \\ 1\-:1 - ll ~J1c1,1po111нri1 pci;ypcl - І'с>І ІІМ Jюcry11y 
\1ttps ://uk. \\'Їkі pcd in. org1,.,,i k in'cst-dri ,·сп clcvc loprнcnt 
1 Тзбунщ11~,: Г. В І Іроск1ув:.11111я ·1n .,10дсню11а1нн1 rrpor 1х1r,11юн) 1абс1r1с•1с1111я 
сучасних інформаціііннх ci,cтcr-.t / l~. в . Тnбунш11 к. Т. І . І(,\11ліс11ко, О.Л. 
Петрова -Запоріжжя: ДШ(С І Іолс, 2016. -250 с. ISПN 978-966-2752-О7-О 
3 ur-.11 [Р'lектронн11і1 рссн>с] Рсж11r.1 досrулу: 
https· //uk. ,vikiped ia.org1\vi k i/l J111 ficcl tv1odcli11g l.unguagc 
4 Роз1·ортання програмного забс1псчен11я - [І2лекrро111тїr ресурс] - Режим 
доступу: 
https://uk.wikipedia.org/wiki/Po11 орт~ш1н1_програм1ю1·0 ·шбс1псчс1111я 
5 Діаграма діяльності (Слек1ро1 11 11111 ресурс] Рсжн~ дос1у11у: 
https://uk.wikipcdia.oгg/wik i/)\iarpaмa _діял1,1юсті 
6 Діаграма станів (UML) - [Елс1<1ро111 1 ий ресурс] - Режим доступ)': 
https://uk.wikipedia.org/wiki/J\ia1paмa станів (UMT,) 
7 TypeScript Docu111cntatio11 · r1::;1c1,1po111111ii J)CC)pCj • Рсж11м ·1ос 1)11~ 
l1ttps://w,vw.typcscriptlang.0І"g/docs/ 
8 Nodc.js Documcntation - f Рнс1про111111іі ресурс] - Режим цocr)ny· 
https://nodcjs.org/cn/docs/ 
9 Express Docнmcntation - ІJ'лс1про111111іі ресурс] - Рсж11м дос 1упу: 
https://cxp1·essjs.com/ru/guide/ 
10 P1·is111a Docн111entation - [Нлск1ро111111й ресурс] - Режим ;~оступу: 
https://w,vw .prisma. io/docs/ 
11 Grammy Docuшentatioп- lЕлсктрон111111 ресурс J - Реж11м дос1уr1у: 
https://grammy .dev/guidc/ 
Структурна схема - [ёлектроrп111й ресурс] Режим досту11у: 
ttpa•//uk.wikipedia.org/wiki/Cтpyктyp1 ш схема 
Wiew-Controller - [Ьлектронн11й ресурс] - Рсж11м досту11у: 
LOrg/wiki/Model-Vie,v-Controller 
64 
ЧДJ \ ~'\\')!7.U01113 
І~ 1tп-егрзційне ~с11 вання • [Р iet.їp,1111111i1 рсС) pcJ • Ре), ІІМ до rупу 
https: fuk.\\'Їk.ipe,dia.org ,,;i...i Інтс1-раці1111с rcc1) uз1111я 
І.5 Снсrе.чне тес~ взння [Е..,.:-~,.,·рою, 1111 rcc) rcl . Рсж11м дщ;1уnу. 
https:. 1
uk.\\ \....ipedia.org1" ik:i С11стемнс_тестуош111я 
10 Прш-ruальне тес~·вання • [ЕлскТронн11і1 ресурс] - Режим доступу: 
https: uk. \\1kipedja.orgt,, іkі/Пр11ііма11ьне _ тестування 
1ї  Дізгрз..'1з К..'Уасів [Еле~1 роннніі ресурс) Р~жнм доступу: 
hnps:., uk., ,ikipedia.orgf,,·iki/ Діаrра:--ш _ класів 
JS Діаrра.\!а П.щетів [Еле~-."Троншrй ресурс] - Режн:1.1 доступу: 
https: , uk. "ikipeilia.org. ,vi.ki Діаграма_ пакетів 
19 t.Іетод:nч:ні рекомендації до підготовки кваліфікаційної роботи бакалавра 
для здобуватnв вищої освіти зі спеціальності 121 «Інженерія програмного 
забезпечення» усіх форм навчання [Текст] !Укл.: Голуб С.В., Заспа Г.О., 
Півень О.Б. Катаєва Є.Ю., Салаnатов В.І., Метелап В.В .. Олексюк В.В.; М­
во освіти і науки України. 
65 
о ток 
ЗАТВЕРДЖЕІfО 
Зав ка дрн ГІЗЛС 
лубС В 
ПРОГРАМНА РЕАJПЗАЦІЯ ТЕЛЕГРАМ-БОТУ МАГАЗИНУ 
рИБАЛЬСЬКИХ ТОВАРІВ З МОЖЛИВІСТЮ АДМІНІСТРУВАННЯ 
Специфікаці• 
482.ЧДТУ.231917-003 
Листів І 
Золотоверхий А. Я. 
Первунінський С . М. 
Півень О.Б. 
2 
Найменува1111я ІІриміrка 
.23 1917-003 12-01 Лістинг програми 
.231917-003 34-01 Інструкція користувача 
.231917-003 90-01 Графічні матеріали 
67 
ПРО ГР Alv1НA РЕАШЗАЦ1Я ТЕЛЕГРАМ-БОТУ МАГАЗИНУ 
РИБАЛЬСЬКИХ ТОВАРІВ З МОЖЛИВІСТЮ АДМІНІСТРУВАННЯ 
Лістинг програми 
482.ЧДТУ.231917-003 12-01 
Листів 65 
Золотоверхий А.Я. 
Розробник 
Черкаси 2023 
2 
48~ ЧДІ \ 2)1917-003 12-01 
•usc ~tnct • 
l)bJc,t dcfincPropen) (c:-.por1s," сs:,.\,)dІІ\с", ( \.ІІІІс : Ін~с }) , 
c<,n,t scqticlile_  І I cqщгc("scqucli?c"), 
const ~.cqucli7.c - nc\\ sequelizc I .Scqucl11.e('sqlite incmory '), 
~Іw;s Uscr 1 
"use strict". 
Objcct.dclinc\>ropcrt) ( export:,, " esMo~lu\c". ( v.ilнc : true }) ; 
Na,•1gationButton js 
'\1sc ~tr1c1"; 
, ·11r _з,шіtсr = (tl,is && tl1is 11\vo.itcr) 11 tunctiun (tl,isArg, nrgumenls, Р, gencrutor) { 
functio11 ndopt(,,1\uc) { retum ,ntue instanceot J>? value · 1,е,.,· P(function (resolve) { 
re~o\vc(valt1e); І); } 
return 11е\\ (Р 1 (Р Proniisc:))(function (resol\ с, rcjcct) ( 
Іi.inction fultillc~t(,·alue) І try І step(gcncrator 11cxt(\·aluc)), } catch (е) { reject(e); } } 
functioп rejectcd(value) { 11) { step{generator{"thro,..,"](\•nlucJJ, } catch (е) { rcject(e); 
) ) 
fщ1с1іон step(1·csнlt) { rcsult.donc '/ resol,·e(rcs11lt vulш:) . 
adop1(rest1lt., n\11c) thcп(fu lfilled, reJccted); } 
step((gc11eшtor gener.1tor.uppl) tth1sAr~. .irgшнcвts 11 11)).ncxt()); 
) ): 
І ; 
Object.defi11ePropcr1) ( ехро11~. "_esModu\c''. { vnluc: tн1е І); 
exports.Nav1gationButton ,01d О; 
tcxt, currentMenu, mcnu ГоNа, 1gutc) { 
69 
1 
} 
e,port.'> 1',;a,1gationButtoп = Na, 1• "n' a•u,O ш_, nu iton; 
Aboutl\1cou.js 
"use strict", 
,·ar _dccorate = (rhis && this._d1.:corate) 11 functio11 (dccorators, target, key, desc) { 
var с = arguments.length. r = с < З ? targt:t : dt:sc ==- null ? desc -= 
Qbject.getOwnPropertyDescriptor(target, key) - desc d; · 
if(typeofReflect--== "object" && t}peofReЛect.decorate = "fLІnction") r = 
Reflect.dccorate( decorators, target. key, dt:sc ): 
else for ( var і decorators length - І ; і >= О; і--) і f(d  = dccorators[i]) r -= ( с < 3 ? d(r) . с 
> 3? d(targct, key. r): d(target, key)) 11 r; 
retum с > 3 && r && Object.defmeProperty(target, key, r), r: 
}; 
var _ roetadata = (this & & this._metadata) 11 func tion (k, v) { 
if (typeof Reflect = "object" && typeofReflect.metadata - -- "function") rett1rn 
Reflect.metadata(k, v); 
} ; 
var _a,vaiter = (tl1is && this._awaiter) 11 fLІnctio11 (thisArg, _arguments, Р, gencrator) { 
function adopt(,1al11e) { returв ,•alue instanceof Р? valt1e: пеw P(fLІпclion (rcsolve) { 
resolve(valнe); }) ; } 
retum new (Р 11 (Р = Promise))(function (resolve, reject) { 
function fulfilled(value) { try { step(generator.n~xt(value)): } catcl1 (е) { reject(e); } } 
function rejected(valuc) { try { step{geпerator[" tlu·ow"](valнe)) ; } catch (е) { reject(e); 
} } 
tion step(result) { result.done ? resol\'e(result.valt1e) : 
~;then(fulfilled , rejected); } 
r.., generator.apply(tl1isArg. arguments 11 0 )).nextO); 
70 
4 
4 S::!.Ч,l_Гу :!З\917-003 12-01 
Qbject.defrnePropertyte:чxms ,, ·r-. d " 
• - e~i 1O  ulc • І v.11111.:: 111.1е J ) ; 
e:-.,,artsAboutMc1,u - \·oid О: 
const tsyringe_  1 = n:quire("tsyringe" ): 
с onst BackВutton - І "- requ Іrе (" " 1m enubuttons/B.ickButtoo"); 
coost Mcnu l - require(" fМenu"); 
Іеt AboutMenu =c lass AЬoutMe1\u e:\.'\end~ Menu_l Мепu { 
coru;tructor(mcnuStoragc) { 
super(mcnuStorage), 
this.id · "Про нас"; 
this.registcrButto11(nc\v 13ackButton І B.ickButton("+->", this, menuStorage)); 
} 
open(ctx) { 
const super Objcct.crcatc(nul\, { 
open: { get: О => super.opc11 } 
} ); 
relum t1\.vaiter(tl1is, void О, voitl О, Гu11с11011• О { 
yield ~uper.open.call(tl"s, ctx); 
ytt.:ld tl1is.co111mittv1essuge(ctx, clx.replyWithPhoto(proccss.cnv.AВOUT ІМЛGЕ 11 
1,11ps://tl1umbs.drea111stime.com/Ь/carp-fish-fishing-l10ok-fisl1ing-logo-templatc-club-cmblem-
1511ing•li1en1c-\'eCto1·-il l11stration-carp-tish-fisl1i11g-hook-/ishing-2 I 5307928.jpg", { 
cartiu11· process.e11,· .ЛВОUТ_T F.XT І\ "· t,>CarpFishcr's Paradisc ./Ь> • це 
,nr.ш111 тоuоріп дня рнболовів на карпів", 
рал;е 111ode: "HTt-.lL", 
rcply _1110rkup: tlнs.getKcyboard( ctx) 
} )): 
} ); 
} 
}; 
AЬoutМcnu = _decorate([ 
(0, tsyna&e_l.injectablc:)(). 
_.. .... da;ign:paramtypes". [!\ Іар]) 
71 
5 
482.ЧД1У2ЗІ917-О03 12-ОІ 
caгt/\lenu.j~ 
''USC ~tлCt"  , 
var dccor:нe - (tllis && this. _1іц:ма1с) 11 Гщ11.1юn (dccor..itors, ta1gc1, ke}', dcsc) ( 
var с - arguincnts. le11gt/1, І с "- l ? targ1,;1 dcsc ~ 11u\l '/ tlesc • 
ObJC:CI getO\vnPropcnyDescriptor(t,1r11,eІ, І..е)) dcst· d; 
і( (typeof f{eflcct ==== "ol1jcct" & & І) рсоГ Rctlcc1.dc:co1,He -== "f1inctio11") г -
iict1cc1.dcco1111c( decor.itors. t,U'l:!CL, І..с>, de~c ): 
elsc for (vnr I dccorato,·~.lcngtli _ І: 1 о, ,--) іГ (d _ decorators[i]) r = (с < 3 '? d(r) • с 
;, З 7 d(ta.riiet, І..е). r) d{target, І-су)) 11 r; 
rcttrrn с J &&. r && Ohjcctclcfi11cPropcrt)(Larget, key, r), r; 
} ; 
v11r щctadata ( ІІ1іs && tІш. 111c1ud,1t.i) fi111ctio11 (k, ,•) { 
і( (ІурсоІ· l{cflcct " о ЬJ c•c  І" &•& •  typeol RcПc<.t 111etшJa1a - "Ji111ction") 1·cturn 
Jtcflcct.111cli1dt1Іo(I., v), 
}.  
,·nr a1v111tc1 (tlii,\ && tl1is Н\\ aitcr) 11 1'1111сtіш1 (tІщ;Лr1,1. nrp.u1нc111~. Р. gcncrator) І 
f1111ctio11 н,І<1рІ(\'аІ11с) { rctш11 ,,1І11 с i11slш1ccot Р '> valuc. 11С:\ІІ P(fuпction (ГС$ОІvе) { 
rc~olvc(\'11l11c); }) : } 
1 сtш11 І!С\\ (Р 11 (Р • P1·0111isc))(tl111ct1011 (rcsoІ,,c. rcjcct) { 
1'111н;tіо11 lt1ltillcd(vol11c) { !І') { 1-tcp(gc11crнto1 11cxt(valt1c)); } Ci.ltc\1 te) { reJcct(c); І } 
Іі111с\і()111c.1cc11.·tt(vt1lt1c) { t1')' І stcp(gc11crJtor("tlнow"j(\".1lue)):} cutcl1 (с) { reject(e); 
І } 
Іі111сtіш1 :..tcp(1·cs1111) { н:s11lt.tlo11c ') 1·esol\'\:(rcs11ll.\'.tlt1c) : 
щІорt{~м1Іt. ,•а\11~· ).tl1c11( Іі.11 ІіІ lcJ. 1cjcctctl); : 
sІср((І,JСІ1t'НІІ111· gснсп\\<11 .npplyt tl1isЛrg, :irgнments 11 [ ])).ncxt()): 
}) : 
}; 
Object.definePropen)(exports, "_cst-.lodt1k", { ,,11111.:: true }); 
oxporta.CartМenu ,•oid О; 
rcquire("gnu1m1) ''): 
У.еЬ. ser. ices; C'artScГ\ ісе"); 
У.-еЬ ser, ices. OrderSeГ\·icc"): 
72 
6 
482 ЧДТУ 231917-003 11-01 
r;/1IJfJ BrckBunoa 1 requuц· mcnuЬunonsІВ:ad:Button") 
r;/1IJfJ мaw_J c: require(" -'Мenu•) 
ІеС ea,tМeau class Canмenu cxtends tenu І tenu ( 
c,ansuuctor(canServicc., ordcrScrvice uscr r.,ce menuStмage) ( 
super<mc:nuStorqe) 
this.canScrv•ce c:anScn1cc 
this ordcrScrvice ordcrScn, 1се 
tЬis uscrServ1cc uscrScrvicc 
this 1d "CartМenu" 
this rqisterButton(ncw BackВutton І BacL:.Button("~". th1s. th1 mcnuStorage)), 
this repste,Bunon( ( 
1СХ1 "Оформити 1Ь40МСННІІ 
onCl1c:k (c:tx) > B\\i&1\cr(th1s. \01d О, \01d О, func11on• О ( 
1f (1c:tx from) ( 
rctum, 
) 
c:onst produc:ts y1cld th1s cartScn. ,ес gctCanProduc:t(ctx from.1d), 
1f(produc:ts length < 0) ( 
retum, 
} 
const k new pammy І KeyЬoardO 
.requcstCont8Ct( Вшnрuити ) 
аас 11 Іаа men...St8&C stateld 1, 
tЬІt ooaun•ttdessqe(c:tx c:tx reply( Дм оформпсm~ 1awoaneнtu1 нам 
awaata(tЬis, void О void О 
73 
1 
ІНІІ І І\ 11 
con~1j:--01,Bu~ - JSON.si, 11,~,І){{ 
шe11uld: tl,is.,d. 
cшlhackld: "back''. 
data: data 
\ )· 
І • 
var product = yie\d this.cartScr\ice g1:1Cart.Productf3yld(Numbcr(data)): 
const keyboard ~ ne\v gтanuny _ l. l.11\шeKeyboardQ 
.tе,t("Назад". 'SUsonВuy}·) rowQ; 
yi.eld ctx.api.raw.editMessageText( { 
cbat_id: ((_Ь == ctx.chat) null 11 _Ь = void О? void О: _Ь id) 11-1, 
message_id: ((_d == (_с == ctx.callbackQue1y) = null 11 _с = void О? void О: 
c.Jtlessage) = null 11 _ d = void О ? void О : _d  message_ id) 11 -1, 
text: (product = null II product = void О ? YOid О : 
roduct.product.longDesc1·iption) 11 "", 
parse_mode: "НТМL", 
reply _markup: keyboard 
} ); 
} )); 
tl1is.registerlnlineButtonCallback("addone", ( ctx, data) => _awaiter{this, Yoid О, void 
• function* О { 
var -е, - f, -g; 
const jso11Buy = JSON .striпgify( { 
nienuld: this.id, 
callbackld: "back" . 
data: data 
} ); 
constjsonAddOne = JSON.striпgify({ 
nienuld: this.id, 
callbackld: "addone", 
data: data 
}); 
74 
4~2.ЧJtІ 'У .231 1 )I7-ооз 12-01 
co11$t _і:ю11Rсmо\'сОнс JSON .stiiiч:ti Іу( 
1 
111е1н1Іtі : tl1is.id. 
callbackld. "rcшo,·coitc" 
' 
data: data 
}) : 
var caн.iProtitict yicld tlнs . cartScrvicc.i11crc111e11tCar1ProdoctCount(Numbcr(d3tn)); 
co11st keyboard = nc\\' gran,my І TnliпcKcyboardO 
.text("+", '$UsonAddOne} ').юw() 
. text("-". $tjsonRcп10vcO11c} ' ) .1·0\v() 
.tехt("Назад'', '$ UsonBL1y} ').ro\v(); 
yield ctx.api.raw.editMessagcText( { 
cl1at id: (Le - ctx.cl1at) = nt1ll І с == void О? vo1d О: _c.id) і -1. 
messagc_id: (( g = ( f- ctx.callbackQucry) - null 11 _Г= ,·01d О ? \·oid О : 
f.messagc) - null 11 _g void О'? void О : g.mcssage_id) 11 -1, 
text: t\1is.getProdt1ctDcsc1·iption(cardP1·0duct) 11 "". 
parse __ modc: "HTML". 
reply _rnarkup: kcyboard 
this.registerlnlineButto11CallbackC1гemoveoпe". (c tx, data) => awaitcr(this. ,·oid О. 
void О, function• О { 
var _h, j, _k; 
constjsonВuy = JSON.stringify( { 
menuld: this.id, 
callЬackid: "Ьасk", 
4 2.чд1 '.~з 1911-001 12-01 9 
c~nst j:-ol\Rcщo, с()щ~ JS():--J.~trщ~, ~ ( І 
1
n1enuld· th1s.id. 
callbзc-kld. "ren10, \'Оне" . 
dntn. dntn 
}) : 
,-ar c.ardProduct = ) icld this.c,1n Cf\ ice dccren1e111C'nrtProduc1Count(NumЬer(dзtn)), 
const kc) Ьo:ud = nc\\ gran1in) І \n\ineKc) Ьoard() 
.tcxt('Ч", '${jsonЛ1.ldOnc} ).r1.)\\0 
.tex1(" · •, . S u~nRcino, eOne}') fO\\'() 
.text(" ll.iщ:i". '${jso11Buy} ').ro,,(); 
y1cld ct'l:.api.ra\\•.cditMessageText( { 
chat_ id: (Lh =- ctx.chat) null ІІ І1 
,·oid О ? void О : 11.id) 11 -1, 
message_id: (Lk U = ctx.callbackQuef)) null ІІ j ,·01d О ? ,•oid О 
j.mcssзge) = null І· _k -- ,·01d О? ,oid О: \... 111e:-sage і1.і) 11-l, 
tex1: this.getProductlJescription(cardProduct) '' "", 
рагsе !nodc: "Н1 М L", 
reply markup: keylюard 
) ): 
} )); 
this.registerlnlineBunonCallback("coW"Іt", (ctx, data)-> _a\\·niter(this. ,·oid О. void О, 
fuoction• О ( 
vu _І. _ш, _о; 
varJ!IOCIІCt • yield this.cartService.getCanProductByld(Nun1Ьer(data)), 
76 
н, 
menuld: this.id, 
ca)\Ьackld : "addonc:"•  
data: data 
const jsonRemoveOne = JSO .stringi І°) ( ( 
menuld: this.id, 
callbackld: "remo,·eone" 
data: data 
} ); 
const keyЬoard = ПС\\ grammy _ l . lnlineKe)·ЬoardQ 
.text("+", · S UsonAddOne) · ).row() 
.text("-", 'SUsonRemo,·eOne}' ).ro\\() 
.tехt("Назад". ·s UsonВuy) · ).ro"·(); 
yield ctx .api.raw.editМessageText( { 
chat_id: (Ll = ctx.chat) = null 1 _І-== , ·oid О ? void О: _l.id) 11 -1, 
message_id: (Lo = (_m • ctx.callbackQuef)) =- null 11 _m =- void О ? ,•oid О : 
_m.message) = null 11 _о =- ,oid О? , oid О: _o.message_id) -1 , 
text: this.getProductDescri ption(product ), 
parse_mode: "НТМL", 
reply _markup: keyЬoard 
)). 
ЬICk("delete", (ctx, data) => _awaiter(this, void О, void О, 
(ctx, data) •> _awaiter(this, void О, void О, 
482 чдТУ 231917-003 12-01 І І 
reaun; 
} 
const JSOnlnfo JSON stnngify( { 
inenuld: this.id. 
callЬeckld: "info", 
data·  product.id 
) ); 
c:onst jsonDelete = JSON.stringif)•( { 
menuld: this.id, 
c:allЬack.ld: "dclcte", 
data: produc:t id 
}) ; 
c:onst jsonCount =- JSON .string1fy( { 
menuld: this.id, 
c:allЬackld : "c:ount", 
data: productid 
}); 
const keyЬoanl new grammy _ 1 lnlineKeyЬoard() 
.tехІ("Подробвuі", S Usonlnfo } ·) 
.t8ХІ("ЗмівІmІ кіJо.кісn.", •$  (jsonCount} ·) 
~..-тм". 'S{jsonDclete) ' ); 
•.editМealacText( { 
~111!11) __р void О ? void О : __p.id) 11 -1, 
Quay)-null І q-void0?void0 : 
_1d) -1, 
482
· чдтУ.2з 1917-ооз 12-01 12 
.;c,n:-t _supcr ,.. Objcct.crcзte(n\\\l , { 
t)pen: { get: О==> :;upcr.ope11 } 
JІ )·•  
return-a"vaitel"\this. "·oid О. \·oid О. function• О { 
yield _super.open.call(th1s. ct,1: 
,,  ield tшs.reply(ct,): 
}): 
} 
rt:ply( ctx) { 
retwn _awaiter(this. void О. Yoid О. function* О { 
const from = ctx.from: 
1f(!from) { 
y1eld this.commiti\1essage(ctx. cLx.reply("Toвapiв в коmнку не знайдено!')); 
retum; 
} 
const products = yield this.cartSen·ice.getCartProduct(from.id); 
if (products. length <= О) { 
yield this.commitMessage(c tx. ctx.reply('KoшI{l( порожній·, { 
rep\y_шarl,.-up: th1s.getKeyboard(ctx) 
} )): 
} 
else { 
tor ( const product о f products) { 
yield this.rep\y Productlmages(c t\:. product): 
yield this.replyProductDescription(c tx. product): 
} 
7iold this.-c:arnrnit)dessage( ctx. ctx.reply(' Т Кош:и:к t ·. { 
1Ьis.getКeyЬoard(С ІХ) 
79 
1917-ooJ 12-оІ ІJ 
a•.::.oiillifl'n. ....ll ll{t(atx..•' JiМidМIDt) 
,__ •••1 ~ vі"' Іt ·.-.-.-.. -.ао,...,Іkл•ос 
Ol1lflll.lllllli8AnaJ"Ama,(); 
tьr(СІІІІІІМ'іІІ"" І of'Jlloduct.PІOCІuet_PIUductlm8pt) ( 
W(Jlrodtld ( 
eufi •• 
} 
8DIIClilAnay раІЬ( ( 
а,ре:'рЬuІа/. 
_.• . producthup amaaeur1. 
)); 
} 
Jicld ІНе СІ .,..,.іІ()рk,н,, ІІ(tІХ, CIX.replyWhЬМediaGroup(mediaArray)); 
}); 
JIIQClucl ) 
-th11мunt} 
4s:.чд I У.2з 1917-ооз 12-01 14 
сон~t jsonCount JSON.stnngif)( І 
nie11uld: this.1d,_ 
callback.ld: "count". 
datз: product.id 
} ), 
const kc) hoзrd = ne\, grumщ) - І І nlincKcyЬoard() 
.tехt("Подроб1щі". "S{jsonlnfo}') 
. tсхt("Змі1ш1н кщькіс11,", "${jsoпCouщ)") 
.tсхt("1311дал11т11". $ fjsonПelcte} "), 
const description = this.gc1Produc1 Ocscriptюn(rroduct): 
yicld this conunitMessage(c tx, ctx.rcply(d c~crirtion, ( 
rcply _markup: keyЬo.ud. 
p::irя:_modc: "Нl'МІ" 
І)): 
}) : 
hondleMcssage(ctx, mess:igc) { 
retuп1 _tl\Vnitcr(this, ,·oid О, ,·oid О, fнnction• () ( 
s,vitch (ctx.scssion.mcnuStnte.stateld) { 
casc І: 
it"(!ctx.messagc 11 !ctx.message.coпtact . !ctx.from) { 
retum; 
} 
CODSt numЬer Lb La - ctx.messagc) ---се null )1 _а ==--о Yoid О? ,·oid О ; 
void О ? void О · _ b.phone _ numЬer; 
~ this.cartService.getCartProduct( ctx.from. id); 
·ce.getUser(ctx.fтom.id); 
81 
482-чдТУ.231917-003 12-01 І S 
c:onst order • ..y ield this orderServ,ц creatcOrdcr(user id, 
~ .frolll.usenwDe І Неаuюмо•. nwnЬer, J)l'Oduc:ts), 
Р- ctX.session.menuState.ordcrld • order.id; 
c~.session.menu tate.stateld = 2 
yield this.commitМessagc(~tx. сtх. rерІу("Напишіть адресу доставки", { 
reply _markup: { remove keyЬoard _ true } 
}) ); 
break, 
c:ase 2: 
if (!ctx.message II ctx.session.menuState.orderld = -І 11 !ctx.from) ( 
retum; 
} 
c:onst address message, 
const cartProducts = yield this.cartService.getCartProduct(ctx.from.1d); 
for (const product of c:artProducts) ( 
yield this.cartService.removeCartProduct(product.id); 
IJIJ\ddNІІІ(cctx:cx.t.1e111asa·,on menuState orderld, address); 
~ ctx rсрІу('Замоuенu •S(orderp.1d) дода110, 
• 
482-ЧДтУ,231917-003 12-01 16 
ineiadata("design:paramtypcs" (Can . 
- • er.,cc: І CanSef'\ 1се, 
OfderSen ісе l .OrderService, 
uscrService _ l .U serServicc, 
МІРП 
cartМenu); 
]. 
eXJ)Or ts .C artМcnu = CanMcnu·•  
c11ecoryMeau.j1 
•use 5trict"; 
,-ar _ decorate = (this && this._ decorate) 1 function (decorators. target, kcy, dcsc) { 
var с arguments.length, r с < З ? target : desc = nul\ ? desc 
oь,eci.getOwnPropenyDescriptor(target, key) • desc. d; 
if(typeofRcflect = "object" && typeofRetlcct.decoratc L- "fщ1ction") r = 
iuf]ect.decorate(decorators, target, key, desc); 
else for (var і = decorators.length - І; і > О; і--) if(d =d ecorators[i І) r (с < 3? d(r) : с 
,. 3? d(target, kcy, r) : d(target, key)) 11 r; 
retum с > З && r && Object.definePropeny(target, key, r). r; 
}; 
var _meladata = (this && this._ metadata) 11 function (k, v) { 
jf (typeof Ref1ect....., "object" && typeof Reflect.metadata "function") retum 
Ref)ect.mctadata(k, v); 
}. 
awaiter • (this && this._awaiter) 11 function (thisArg, _ arguments, Р, generator) { 
=.-n..Yllue) ( retum value instanceof Р ? value: new P(function (resolve) { 
., 
jtep(aenerator.next(value)); } catch (е) { reject(e); } } 
ll(l~rato.r["throw")(value)); } catch (е) { reject(e); 
83 
482-ЧдТУ.231917-ООЗ 12-ОІ 17 
rts CategoryMenu"" void О; 
е(р0 
~ tsyringe _ І require("tsyringe"): 
const productsService _ l require(" .J" web/ser.•iccs/ProductsSerY1ce"); 
const васІ.Вunо11_І require(" П1cnubutto11s1Bi1ckHu:1011''); 
const Menu І - require(" ./Мenu"), 
cons І productsMenu І ""require(" /Produc1sMenu")·•  
JеІ C:itegol) Menu class CategoryMenu cxtends Menu_ 1.Mcnu І 
constructor(productsService, productsMt:iщ, iнt:nuStiir,agc:) t 
super(menuStorage ); 
this.productsServ ісе productsService, 
this.productsMenu • productsMenu; 
1his.id "CnІegoryMenu", 
ihis.registcrButton(new BnckButtoп І BackButton("~". this, 1l1is шc1шStorзgc)) ; 
open(ctx) { 
const super • Object.crente(null, { 
open: ( get: О•> super.open } 
) ); 
retum awaiter(this, void О, vo,d О, function• О { 
ООІІІt СМІRОІ'ІеІ yteld this productsService.getCategorics(); 
(,(!!!МIJFІJOf Clll&va'IOI) { 
vo1d О vo1d О, fwкt1on• О { 
482-ЧдТ 231917-ООЗ 12-ОІ 18 
reply marlcup: th1s getKe) Ьоаrdл R ( 
- 0\\ СІ ) 
} )): 
}): 
} 
ь;uidleMessage(ctx, mcssage) { 
rcturn _a"-aiter(this, ,o,d О, ,o,d о. function• { 
0 
const categories = >i eld this.productsSer. ісс getCategor1esO: 
const buttons " new Мар(); 
for (const category of categories) { 
buttons.set(categof) .name. { 
text: category. name. 
onClick: (ctx) -=> _a\\11.iter(this. ,oid О, ,·oid О, function• О { 
yield this.handleButtonClick(ctx, category): 
}) 
} ): 
} 
const bunon = bunons.get(message}: 
і f (button) { 
button.onClick(ctx); 
} 
}} ; 
} 
ЬandleBunonClick(ctx, category) { 
return awaitcr(this. void о void О, function• О { 
••~- • Jo11mSateat"e r.urr1re-n•--1o5 ry = category .id; 
), 
8S 
82 
" чдтУ 231917 003 І 2 01 
-(1l(Oddlf ~&&n:J)8r8mt\ 
PzO(luctSМenu І Produc:tsMenu 
м-,,]) 
~oryMenu). 
~ 
~CalcgOIYMc:nu = CategoryMenu. 
F•"° ,iacs'Мea■.j1 
-use smct"; 
,-tr _dcCOrate-= (tЬis && this._detorate) 11 function (decorators, target, key, desc) { 
,111 с • argumcnts.l~ r = с < З ? target desc null " desc 
()t!J...,,....~ .=, et<)\\-nPropert) Descnptor(target, key) . dcsc • d ' 
if(typeofReflect "object" && typeofRetlect.decorate "funct1on") r 
~decOrate(decorators, target, key, desc); 
el.se for (var і = decorators.length - 1; і > О; і-) if (d = decorators[i]) r • (с < З ? d(r) с 
• ? d(targd. kcy, r) · d(target, key)) r. 
,. J • 
retum с > 3 && r && Object.definePropeny(target, key, r), r; 
); 
var _metadata'"' (this && this._metadata) 11 function (k, v) ( 
if(typeofReflect = "object" && typeofRetlect.metadata = "function") rctum 
Reflcct.metadata(k, v); 
); 
var _awaiter =- (this && this._awaiter) 11 function (thisArg, arguments, Р, generator) ( 
fuDction adopl(value) { retum value instanceof P? value: new P(function (reso\ve) { 
JeІONC{value); }); } 
111111D D8W {РІ (Р • Pюmile)Xfuoction (resolve, rejcct) { 
ру ( step(generator.next(value)); } catch (е) { reject(e); } } 
!(JellaatcИ("tЬrow"](value)); } catcb (е) { rejec1(c); 
86 
482-ЧдтУ 231917-003 12-01 20 
c0nst grarnmY І • reqwщ•grammy"), 
cOfІSI tsynnge_  l • reqwщ-tsynnge"); 
с0!'5' cartService_l = reqwщ", /. wehlser.1ces1Cart&n,1ce"); 
Favorites ervice І • require(" Ь/ . 
con51 - · \\.е ser. 1ces1Fa, ontesSer. ісс"), 
сОfІSІ вackButton_l • requiщ". /menubunons'Вack81.111on"); 
eonsl Mcnu_ І require(" ./Menu"). 
ІеІ Fa,oritcsMenu class FavontesMenu extcods Menu I .Menu ! 
constnicl..,r(favorites, canSenice, mcnuStorage) { 
super(menuStorage); 
this.favorites = favorites: 
ttus.cartSef'\I ісс cartScrv1ce, 
this.id .. "Обране"; 
1his.rcgistcrBunon(new RackВutton І BackBuiton("t->", this, шenuStorвge)): 
this.registcrlnlineBu11onCalltюck(''delete", (ctx, data) > a,,aiter(thi~. , oid О. void О, 
runction• О ( 
const fa,oritcld • Nu,nЬcr(data); 
yield this.favorites.renюvefavoriteProduct(favoriteld); 
yield ctx.cditMessageText("Toвap nнда11е1ю.") 
} )); 
dus registerlnlineBunonCallЬack("buy", (ctx, data) -> _awaiter(this, ,oid О. void О. 
f\lDCIЇOD • 0 { 
oonst favonteld "NwnЬer(data), 
• • tcs getFavonteProductВyld(favoriteld); 
product.productld); 
Id); 
87 
·- 1917-003 12-01 
con~_1 - ~upc1· • ObJect creatctnull, f 
0 ~n: { get· О=> ~upcr.ope11 } 
І); 
returtl _a,vaiter(th.is, void О. void О. fltnctio • О { 
11
),eld _ super.opt:n.cull(tl1i5, ctx): 
if(ctx.from) t 
const favorites"' (y1eld tliis favoritcs.getFavorites(ctx.from.id)} 11 ncw лrrayO: 
for (coost favorite of f,\vontes) f 
const р = favor1te.prodt1ct, 
const mediaArray =- ne,v An-t1y(); 
fo1 (const productlmage of p.pІ"Odt1ctlmages) { 
if (producUmage.i111agcUrl = ") f 
coпtinue, 
console.log(prodt1ctlщage.1mageUrl); 
mediaAr1·ay .push( { 
type: 'photo'. 
media prodнctlmuge.i111agcu r\ , 
} ); 
} 
const messages = yield t\1is.co111mitOroupMessage(ctx, 
сІ\ ~• рІ' \\'itl,l\ ІedinG,·oup(niedia,\rray) ): J 
coпst jso11Dckte .ISON.stri11gif}·( { 
щenu1d: this.id, 
cnllbackld: "delete", 
data: favorite.id 
} ); 
constJsonВuy "JSON.stringil) ( { 
aaeeuld this.1d. 
88 
48:!,Ч}tl) 2,19\7-00l 12 01 
con t kC)'lю:ird tІС\\ , І 
grщнн> І11І111сКс)'Іm щІ() 
,ІС:\.І( "Додr1111 11 ко11 1111,". 1,ю 11 Btiy) 
.tcxtt" В1tдд1111t11". ію11\)с\с1с), 
) icld 1І11s.co1111111tl\1c,;;sngc(clx, ct:-.: rcrl)(p.rianic 
1срІу_111ш\..:нр: kcyboa1d 
} )); 
yicld 1l11s.comn11tMessagc(ctx. (\Х 1·срІу(" t С~шсок обраноr·о Т ", { 
rcp\y _mark.--up: tl1is.gc1Kc) board(ctx) 
})  ): 
'І )•.  
}. 
1·з,•ori1esMc11u = __ decoratc([ 
(О, tsyringe_ l .iпjectable)(), 
- metadata( "design:para,нtypcs". [l:a,·oritcsScГ\ ісе- 1.1:u,·oritcsScГ\·ice. 
CartSel'\ice _ \ .CartSer\·ice, 
Мар]) 
), FavoritesMenu); 
exports.FavoritesMenu FavoritesMcn11; 
l■f0Meaa.j1 
"use sЬict"; 
VІr _cleccnte (this && this._decorate) І' І'unctio11 (dccor.itors. 1argct, ke), dcsc) { 
, r = с < 3? targct : desc -- rюІІ? desc -
r(target, key) : desc. d; 
"иІUІС~• &&. typeof Rel1ect.decoratc = "11.шсtіоп") r 
esc); 
О; 1--) if (d decomtorslil) r- (с <З? d(r): с 
➔R2 .ЧДІV "131917-ООЗ 12-01 23 
"Іш1с1юn") rcнirn 
\. 
І' 
\'(11' _a,vaitcr "" (this && this._a\vaitc1·) 11 fнnclion (ІhisA1g, _argun1e11ts. Р, gc11crutщ) { 
fuJ1Ction adopt(value) { retum vall1e i11stal\ceot' р '/ \·a\t1c: ne,v P(l'u11ctio11 (resolvc) І 
(vaІue); }) ; } 
')01,е 
І' retur11 ne,v (Р 11 (Р = Pщщise))(funct1011 (resolvc, i·cject) { 
function fulfilled(value) { lry { step(gcncrator.next(valuc));} calch (с) { rcjcct(e),) 
fuлction rcjected(value) { try { step(geщ:ratoi'(''throw"І(valш:));} cutcli (1.:) { rt.:jecl(e); 
І І 
function step(result) { result.tlonc ? rcsolvc(rcsult. value) : 
зdopt(resul1.valuc).tl1e11(fulfilled, rejectcd); } 
step((gcne1·ator = generator.apply(tlщ;Arg, a1·gun1eпts 11 (])).next()); 
}) ; 
}, 
Object.dcfi11ePropc1·ty( exports, " csMotlнlc", { val uc: 11·ue }) ; 
exports.Inf0Me11u - voitl О; 
const tsyringe І = requi1·e("tsyringc"); 
coпst Navigatio11Butto11 І = reqtrirc(" .. /1щ:11ubtШ011s/1\lavigation.Внtto11"); 
const Ме1ш_ І J"cquire(" ./Mcnu"); 
co11st ЛЬоutМепн І = requirc("./ЛhoutMe11u"); 
co11st Cntcgo1y~ lc11u_l '= rcquirc(" /C:.itcgoryMeнu"); 
coнst Fn,·orilc$Mc1ш_ І - 1·eqtiirc(" л=avoritcsMcnu"): 
const Cru1Me1ш_l = require("./C.u1Mcnu"); 
const OrdersMenu_ l = requirc("./OrdersMenu"); 
\et \11f0Menu = class lnfoMenu extentls ~ Іе1ш _l  .Menu { 
constructor(aЬoutМenu. cate~oгy~kпu. t:1,·oi·itesMenu. cartMenu. oпlerMent1, 
menuStorage) { 
super(menuStorage); 
thia.aЬoatМema aЬoutМenu; 
'tesМenu; 
90 
482
· ЧJ\ ГV 11 І 9 І 7-ООЗ 12-0 І 24 
tJtis.ordcrMenu = 01·der~1enu; 
tliis.id ==- "Головttс меню": 
i.. 1· 5 1-egisterButton(nc,.,, N·\, і" · t · в )· 
tJ• · • t:-'1 юn tНto11_ I . Nriviga1io11Hн1tr111("r J", t/1is, aboo tMc11ii) ' 
tЬis registerButton(пc,\ Na, ig<1tio11Btttto11_ I .N.,vi ga1io11Button("(;i", this, 
ryмenu)); 
,:,t~go , 
tЬis.registcrButto11(ne\v Navigatio11Butto11~ 1.Navig:itionButton(" * ", 1t1is, 
•tesMe11u )); 
fв,,оп 
st
this.regi crB utto n( new №t,·ig3tio11B нt1011 І .N avi~atio11Bt1ttcш(" О '' . thi s, c.in Мсп u)); 
tJ1is.regi5ІcrButton(ncw Navigatio11Bнtto11 _ l .Nuv1gatio11І3utto11( "1~ ·1 , this. 
orderмenu)); 
open(ctx) { 
const supcr = Object.create(11t1ll, { 
open: { gct: О => super орен } 
}) : 
1ctu111 a,vaiter(tl1is, void О. void О, Гшк.tіоп ~ () { 
yicld super.open.cal l(tl11s, ctx): 
yield tl1is.con1mitMessage(ctx, сtхл:рІ) Witl1P/10to(p1·ocess.c11,1.INFO IMAGE 11 
"І,t1ps://,.,'\v\v.si111p l і Іса1·11.со111/ісс9/t'гсе _1·csot1rces ai·ticle tlшщb/\\'hat_is _ iinage _ Processing.j pg 
'' 1 
cnptio1t: proccss cn\ .INFO_ 1 ГХТ !І "Вітаємо в м,11 ·а111ні , b>Ca1·pl•isher's 
Р:11-щІіsс<ІЬ>", 
pш·sc_111ode : "HTML'', 
reply _111щ·ktap : tl1is.gcthe) board(ctx) 
}) ): 
}) ; 
} 
}, 
шfЬМІDU ~[ 
,~~~ f..3.М•ІDІ~еЮ, 
", (AЬoutМenu _I  .AboutМenu, 
91 
482 ЧJn'Y231917-003 12-01 
~-•СІІtМеІМа. 
~-•OnlenМeвu. 
t,tІP)) 
~~); 
~tnfoМcoU a ІnfoMenu. 
~--.Js 
-u,eslriet"; 
VII-~• (this U this._awaiter) function (thisArg. _arguments, Р. generator) І 
fuDCIЇOD 8dopl(value) { retum value instanccof Р? value · new P(function (rc:solvc:) f 
~value); }); } 
reeura new (Р 11 (Р • Promise)Xfunction (resolve, reject) ( 
{uaCtioD tulfilled(value) { try { step{generator.ncxt(value)); } catch (е) ( reject(e); } } 
(unction rejectcd(value) { try ( stcp(generator("throw")(value)); } catch (е) ( reject(e); 
І} 
(unc:tion saep(result) { resultdooe? resolve(resultvalue): 
IIIOP'(,csu1t.value)Jhal(fulfilled, rejectcd); } 
steP((aeuaator • aene1110r.apply(thisArg _arguments 11 0)).next()); 
}); 
}; 
482 ЧдтУ 2) І 917 003 І 01 І 
c:wтcntPaae. c:tx 1e111on n"1Cnus1a, .. 
" urnn1P1 
cuneotCatqory c:tx 1е11юn menus111 
c:urтentМenu th,s 1d, 
,entМessaaes new Аrтау() 
}. 
)); 
} 
c\ose(ctx, saveHistory) ( 
var а; 
retum _awaiter(this, void О, ,oid О. funct,on• О ( 
і f (s aveHistory) ( 
c:tx.session.menuНistory .push( this 1d), 
while (c:tx.session.menuState.sentMessages.length > О) ( 
c:onst id • c:tx.session mmuSta1e sentMessages рор(); 
if (id) ( 
yicld c:tx.api.delctcMessage((La ctx.c:hal) null \ _а void О ? void О : 
a.id) Н-1, id); 
} 
} 
І\°'1 k"·•,• \чч,r~І ІІС\\ L\t(\\НJH\ 1 К со ,1 С) 1\t \ 11 ,І(), 
thi~.b\11tot1 .forl·uct1((bt11, 11 :~щс) ( 
\..(') \)1.),'1\\ \('',.І( І\111\ІС ) . 11\\\ О: 
}): 
1-;суЬою·d .р1.•1 sistc,щ ); 
rct\tnІ kcybonrd; 
} 
oninlincButto11Cn1\bac\цctx. d,itn) { 
r~ttt\"11 _a\vnitcф\1i:;, ,·oitl О, , oid о, r,,,,сtнщ• () { 
jf (this.id !• dnta.шcnuld) І 
consok crror('l11\ineBtttt011Cal1Lщck recic\'Cd hy ,,·roi,g menu ${this.id} instend of 
S{data.menuld}, ). 
retum. 
const callh.1ck - tlнs inl111el'a\lhacks нet(data.callhackld); 
it'(callback) { 
1·ctt1П\ callback(ctx. data.tlata): 
co111111itMcssagc(ctx, 1·ер Іу) І 
rct1.tn1 _a,-. niter(tltis, ,,o,d О, ,oid О. fu11ction• О { 
co11st id (yiclti rcrly).111cssage_iJ; 
ctx.session.menuState.sentMessnges.push(id). 
retum id; 
}) ; 
) 
commitOroupМessage(ctx. reply) { 
return ......-(this, void О, void О. fttnctio11• О І 
94 
tt 1,,,atюn( І'\ ut } ( 
' 
І\\ Іt ttн 
,ar а. 
, ,cld tІ,, on( І, k( ct ((  n 
І 11\ 
""). 
) ield ct .deleteMe sagc(). 
}) ): 
} 
registerBunon(menuButton) { 
this.buttons.set(menuButton.text, menuButton): 
} 
registerlnlineButtonCallback(id, callback) { 
this.inlineCallbacks.set(id, callback); 
} 
hlDdleMessage(c tx, message) { 
ldUID _awaitel(this, void О, void О, function• О { } ); 
) 
, void О, function• О { 
"fli'_,w.•. 
,_ _ _.-•(dala. ...l lh. .........) ~(dlOClrlton.urpt k ) 
,_с • .....-..ІІІІаtЬ.r с 3 .._ сІас null сІІІс 
~Dе•~а-.Ьу) delc.d, 
~~dif( ecycpeOof Rle8flIecOt - IS".o-Ьj-e.c t" U ~fR eOect.decorate "runcuon") r 
key,dac), 
e1sefor(V81'i •decorators.leaath-1; • О; і-) af(d • dccoraton(1]) r (с 3 d(r) с 
:,3 ,d(_... uy, r): d(tarpt, key)) 11 r; 
ieeara с > 3 АА r .U: OЬject.de&neProperty(taqet. key, r), r, 
}; 
""_JDCC8d• • (this .U: this._md8NIІ} 11 function (k. v) { 
if(typeofReDect- "object" && typeofReOect.metadatІ- "function") retum 
~ v); 
); 
var _awaiter • (this && this._awaiter) 11 function (thisArg, _arguments, Р, generator) { 
,-. ~fР ? value: new P(function (resolve) ( 
(resolve, reject) { 
Jat(value));} саtсЬ (е) { iejec(e);}} 
t•ttvow"](value)); } catch (е) { reJect{e); 
* -А...  -ьм-- _--,■  ..,...,._.....,....  
-..:с І в aц. .. 8wtsPw4,. l8erU\mi8(8. .. -■ • І 
еа і 
-C1-1-11-5-taJatailde lWd•ж м(dІІа dwis•4ь hwe,&etOrda(onlsld); 
о? vaid о arder.lllle) 
1 М (arder 111111 
4І  
сон~t мdcrs = yi('\d t1,is.,)rd, , , rнаІІ u r 
•J О·? ,~н· u-~  О ·•  \l~·C r.", d) ; сп; СІ-. ,сс,  gct ( )rdcn.ByLJ cr ltl(11 cr 
\ ,11 
t'i.1r (coпst ordcr о\' orders) { 
let orde1·Count = О: 
let cost = О: 
lct productsList = ""·, 
for ( const product о!' order· O  r de rProduct) { 
orderCount += product .с  ou11t; 
cost += product.count • product .p ro d uct.pn.c e: 
productsList += · <b>\nl.\1 ,я ..  S 
oduct description' \nIG . {product.product.name}<IЬ>\nOпиc: 
s{product.pr ·. }В'. , льюсть: S{product.count}\nВapтicть: S{product.count • 
product.product.pпce . 
} 
const stateString = this.ordersSeГ\ ice.getState( order.state) : 
if (order.state = О 11 order.state = 1 І order.state = 6) { 
const j sonDelete = JSO~ .stringi fy( { 
menuld: this.id. 
callbackld: "delete". 
data: order .id 
} ); 
const keyЬoard = new gramrny_l.lnlineKeyboard() 
.text("Bидa.mrm", jsonDelete ); 
mmitМessage(c tx, ctx.reply( · <Ь> За.,ювлепня 
,: $ { orderCount}\ nддреса: $ { order. address} \n<b> Закал ьна 
}<JЬ>\n\nCnиcoк товарів: S{products1-ist} ·. { 
98 
} )): 
\ 
t 
yield tllis.coш шitMessage( ctx, ctx·  1.е  р 1) ( 11 1 С.rшсок 'Jамош,ет, f ", { 
reply_  niarkнp: this.getKcy board(c tx) 
}) ); 
\)· 
І ' 
} 
}; 
OrdersMenu = _decorate([ 
(О. tsyringe _ 1.injectable) (), 
_ metadata(" design:paramtypes", [UserSer\'ice_  l. Us erService, 
OrderService- 1.OrderService , 
Мар]) 
}, OrdersMenu); 
exports.OI"dersMenu = OrdersMenн; 
ProductsMenu.js 
"use strict"; 
var _decorate = (this && this._decorate) 11 function (deco1·ators, target, key, desc) { 
,,ar с = arguments.length, r = с < 3 ? target : desc == nt1ll ? desc = 
0bject.getOY.rnPropertyDescriptor(target, key) : desc, d; 
if {typeof Reflect = "object" && typeofReflect.decorate = "ftшction") r -
Reflect.decorate(decorators, target, key, desc); 
else for (var і= decorators.length - 1; і>~ О; і--) іЦd = decoi-ators[i)) r - (с < 3? d(r) с 
>3 ? d(target, key, r) : d(target, key)) 11 r; 
retum с > З && r && Object.defineProperty(target. key, r). 1·; 
99 
1917-00 І .01 
?н.lf't~lJIOf Reflect  t)'peof R l1tct -___ _.
111 
~ _,waiter • (this thia awaiter) f\anction (thiІAra, llfl\lrмnь Р 
funCЬon adopt(value) { retum value 1nstanceof Р 1 value new P(funct1on (re Іv ) 
~"81ue); }); } 
retufl' new (Р 11 (Р = Promise))(function (resolve. reJect) ( 
funCtion fulfilled(value) { try { step(aenerator.next(value)), } catch (е) ( reJect(e) J J 
funCtion rejected(value) { try { step(generator["throw")(value)); } catch (е) { reJeci(e) 
runction step(result) { result.donc? resolve(result.value): 
;toP'(result.value).then(fulfill~ rejected); } 
step{(generator = generator.apply(thisArg, _argumcnts 11 □)).nextQ); 
}; 
ObjectdefineProperty(e xports, "_esModule", { value: true } ); 
CJl)Orts.ProcІuctSМenu = void О; 
c:onst grammy_l • require("grammy"); 
const tsyriDF_ l =r equire("tsyriDge"); 
CODSt ~ nquirc(" .J.JweЬ/services/CartService"); 
',../.JweЬ/services/FavoritesService"); 
JweЬ/кrvices/Pn)ductsSerce"); 
if 
} 
еІІе{ 
ct:JLsessiOD.menUS age • page, 
yield this.repl~ ку, ctx.session.menuState.cwтentPaae); 
) 
}) 
»~ 
tЬil.reaїsterВutton({ 
voiJ О, vbid О, function• О { 
) ' 
}) 
)). 
thi:, rcgisterl1,lincBu1tonC'n\\Ьзck("bu " 
' ) • (\:.\\;, dіІtСІ) 
,.,р,111° 0 1 
\ ,Іr _3; 
іі (ct."'\.froш) { 
) 1eld this.c.art~er\ 1се adilCar•P. 
• • IOt1 \ ІСІ(І n а vo1d О 7 
n ,d, :,..;wnЬcr(data)): ' ctx fron1) null 
,01d О. 
coп~tjsonl11Іo JSO\: stnngif)({ 
n1c11uld: Іhis.id. 
ca\lbackld: "bnck", 
Jatз: data 
const kcyboarJ - nc,v grammy l .lnlincKeyЬoardO 
.tехІ{"Товurдошuю II КОШІІК, tІІіlЗад)". ·susonu1fo}').ro\\.(); 
, icld ctx.editt-.1cssageReply!\1urkнp( \ 
rcply _11шrkur kcyboard 
} ); 
}) ): 
t11is.l'cgistc1·!11liщ:ButtonCallb.1ck(" Іu,·оrіІс", (с 1х. data) > .i,,aitcr(t\11s, ,·oid О. , 01d 
о, t11n~ti1111• О І 
,·ar _ь: 
if (c1x.fron1) { 
yield this.favori1esSer,·ice.addl·a,oritcl'rodt1ct((_b = c1x.t'ro1n) -= 11ull II _Ь -
,-oid О? void О: b.id, NumЬer(data)): 
} 
ooaatjloalnfo • JSON.stringify( { 
l02 
482 чдТу 2) 1917-00) 12-01 
(ОІІ5І keyЬoard new &ramm 
У І lnl,neKeyЬoanl() 
.teXtf'Тoup .ІЮ.ІІІІІО. (Н--.)" SU 
ІOnlnfo) ) roW() 
yaeld ctx.edatМessaaeReplyМarltup( І 
reply _markup: keyЬoard 
) ); 
) )): 
thJs.registerlnlaneButtonCaJІЬack("info", (ctx, data) > _awaitcr(th1s, vo1d О, vo1d О. 
~•ot 
vii _с, _d, _е, _f; 
console.log(Lc ctx.calІЬ.CkQucry) null _с = void О? void О: 
~е); 
const jsonВuy " JSON .stringify( І 
menuld: this.id, 
callЬackld: "Ьас:k", 
data: data 
) ); 
-var product = yield this.productsService.getProductByld(NumЬer(data)); 
const keyЬoard new grammy l .lnlineKeyЬoard() 
.text("Нaзu", · S UsonВuy} · ).row(), 
yield ctx.epi.raw editМessageText( ( 
chat_id: (Ld  • ctx.chat) null _d  -=- void О ? void О : _d .id) 11 - І, 
mess•r_ id: (Lf • Le =- ctx.caJIЬackQuety)-= null _е-=== void О? void О: 
t.JDet•a~)- null 11 _r-void О? void О: _f.message_id) \І •І, 
- text: (product- null 11 product =-= void О ? void О : product.longDescription) 11 
.. 
І 
-.d lla) => _aWliter(this, void О, void О, 
103 
4 2 ЧДГ) 17 
231917-003 12-01 
mc:nuld: th1 1d, 
саІІЬ:~сkІd "bu.) ". 
data data 
р. 
constjsonFn,oritc: J О tnngif)(( 
menuld: th1s 1d. 
саІІЬзсІJd· "fa,oritc:". 
dзta: datn 
) ): 
const jsonlnfo J ON stnngif) ( { 
mc:nuld: th1s 1d, 
callbackld: "info". 
data: dat.n 
}) ; 
,ar product yield this products еГ\ ,се getProductB.)•ld(NumЬcr(data)); 
af(!product) { 
return; 
} 
i;onst keybonrd ne"'' grnmmy l .lnlancKe.)ЬoardO 
.tc:xt(" Додnт11 в кошик". ·s UsonВu.)} ) го,,'() 
.text(" Дoдnrn в обране". S{jsonFn,onte} · ).ro,,() 
.tехt("Подробиці", 'S{jsonlnfo} '); 
y1eld ctx.1p1 raw editМessage Тe xt( : 
cЬ8tjd: ((.а ctx.chat) null 11 g - vo1d О ? , oid О : _g. id) 11 -1. 
ctx.callЬackQuc:11) - null _ h ,·oid О ? void О : 
vo1d О J messagc: _ні) -1. 
104 
01 
x•\\t -'1') { 
,'І 
о11:-І _:-\Ір.; r = Objc;:1 сrсп1с(1шІ\, ( 
,,рс:11: { g;:t: () м1рсr.1ч)с1, } 
р: 
rt•н1rtt _з\\'3tter(tl,is. \'()id о., ()1\ J O , 
• lщ1ct1, or1 • О { 
yie\d _supcr.open.call{tl,i:-, ctx); 
const categol) = yield 
ductsSef\ ice.getCategoryB) [d( ctx s . 
tЬt5·Г!\' · · essюl1.ntcпuS1u1e.currcntCatcgory); 
jt'(!categOI)') { 
yield tЬis.commit}.1ess.ige(ct·x  • с tx .reply( . Тако~.  категорії 11с існує' . ( 
reply _marlшp. this.getKeyboard(ctx) 
} )); 
retum; 
} 
console.log( ctx.session.menuState.cшrentPage ); 
yield this.reply(c tx, category. ctx.scssio11.111enuStatc.currentPage ); 
yield thi_s.commitMessage(ctx, ctx.replyC t Вітаою вас в ка 1 е 1 ор1 1 
S{category .name} t , { 
reply _ markup: this.getKeyboard( ctx) 
} )); 
}) ; 
reply( ctx, category, page) { 
retum awaiter(this, void О. void О. fш1сtіоп• О { 
const products = yield this.productsScrvicc.getProductsByCategory(pagc, 3, 
category, "asc"); 
for (const product of products) { 
yield this.replyProductlmages( ctx, product); 
yield this.replyProductDescriptio11( ctx, pro(\\lct); 
} 
у ·ІІІМІJМ~~ essage(ctx, сtх.rерІу('Сторію<а #${page + І}')); 
105 
482-чдтУ 231917-003 12-01 )9 
ccPЬ',roductlmlaa(c:tx. product) ( 
rdurD _awaiter(this., voad О, void о. func:tюn• ( 
0 
c:oost mocliaArray - DCW ArrayQ; 
for (c:onst productimaae of proctuct.PIOductlm.aes) ( 
if (JXOductlmaae.imaacur1 - ; 1 
continuc; 
} 
mc,djaAпay .pusЬ( ( 
type: 'photo'. 
media: productlmage,unageUrl, 
} ); 
} 
yield this.c:ommitGroupMessagc(c :tx, c:tx.reply WithМediaGroup(mediaArray)) ; 
}); 
} 
~:мluctlDacriptiel.lМluct){ 
ІWМ)<JЬ>'8t<i>S{produc:t.dcsaiption} <Ji>\n\nЦiнa: 
231917-003 12 01 40 
meauld· tЬis.id. 
с:ІІІЬ8СkІd: "info•. 
data: product.1d 
)); 
c;Oll5t kcyЬoard • new &nnuny І lnlmeКcyЬoard() 
_tеХ1("Дода111 а КОШП", S{jІODВuy) ') row() 
.tеХt("Додати • обране•. S{jsonFavontc} ).row() 
.tеХtс:"ІІодробвці", 'SUsoalnfo} ); 
c:onst de,cripcion this.aetProductDescription(product); 
yield this.commitМessaae(ctx, ctx.l'q)Jy(description, { 
reply _markup: ke)'Ьoud. 
parse_mode: "НТМL" 
})); 
}); 
} 
), 
додАтокв 
ПРОГРАМНА РЕАJПЗАЦІЯ ТЕЛЕГРАМ-БОТУ МАГАЗИНУ 
рИБА.ЛЬСЬКИХ ТОВАРІВ З можлив1сrю АДМІІ-ПСТРУВАННЯ 
ІнС1р~ користувача 
482.ЧДТУ.231917-003 34-01 
Листів 16 
Золотоверхий А.Я. 
482-ЧдтУ.231917-003 34-01 2 
1
• Встано11.11е~,~,а nporp1м11oro 1абе111е•1е111111 
J111Я 8становленни програмного забезnеченни користува•1сь1 11собх~JНІО 
. І\,Іати посиланНJІ на телеграм-бот . ~• 
Рисунок В. І - посилання на телеграм бот 
2. Внкорнстан1111 додатку (Телеграм-бот) 
І J1.і СЛ я натискання на посилання користувач потрапляє на головну 
· стор~· нку телеграм-боту магазину. Щоб розпочати роботу потрібно 
нати снути на кнопку «Розпочати►>. 
OJ 
• о 
с: 
0 
:ч бачить меню та 
109 
482.чдтУ.231917-003 3~01 
,,.._ 
0 r. 
8 ... 
"' •• • 
Рисунок В.З - Меню магазину 
з. меюо містить S кнопок : 
1. «Про нас» 
2. «І(атеrор1-1 ТО&арІ.В >> 
. J()ВІр)І» 
482.ЧДl \ ' ·'~) З 19 І7-UО3 14-01 4 
(1 н,,тисне11н1 ю-юпю1 (<Про 
А . Р1 1 11 ас)} , корнс1у11nч може Gnч11тн мс11ІО 
<J lpO нзс>) . Для по11ерсн•е ння 8 n оnерсдщ.: меню кор11с1уВ3'1 нnп1ска1.: 
.. ,ont-, «Назад)> в нижшіі часн111·І  ПІ• 1 t-ro • <11.1. 
.,.. .... 
0 о 
о « 
9 " 
•д МІ,І•ао..,.,-
. 
"> . 
t:I 
Рисунок В.5 - Меню «Про нас)) 
s. При натисненні кнопки «Категорії товарів)), користувач може 
бачити список категорій товарів ма~·азJшу. 
l'ltІІ~~c"'voч7oonv1 , .,,., .J ІІt,1"..,VІtVN •• .J..,-VVW"МV О\.С мv~111сс, 
щоб wбf:JМЧМ'И NM ~ращІ ІНС'ІР)"'tн,11 дnа y<n1wнoro 
...,o,y~.JpN 
- е 
рії товарів магазину 
1 11  
4S2.ЧДТ\' "')119 
• ·-~ 17-003 34-01 5 
11рн »втисненні на відповідн) t1· • _ _ кn,-cropiio кор11сту1kач може ба•ттн 
111[coi-: товар~ в ооранОІ категорії Т . . . 
с . . . · овr~рн р()з~нщсні по 5 на стор1н111. 
r.raВirau-ui :-.nж стор1нками реаліз . 
г~ ована стр,лками. 
CD 1 no. .., . 
0 Q 
СІ (- С' 
а н-
·~ ,1'1,1,,Т.І ,:') rt'),... 
0 ... 
""'"'" 
в Jt'!"o' ..... ,J р ,.а( 1,,.,..,..n- f.-C-
С2 
Рисунок В.7 - Список товарів категорії 
7. При натисканні на кнопку «Подробиuі» користувач баqить 
додаткову інформацію про товар. 
112 
{, 
-. 
(:, 
о • 
~ -..... •,11, .. -
( 
~ . 
~· 
Qе:___. .м-•и""""8fІ'Е••.....-оо~ 
Q 
Рисунок В.8 - Додаткова інформація про товар. 
8_ При натисканні кнпоки «Додати в кошик», товар додасться до 
кошику. При натисканні кноnкн «Дода ш в обране» , тоuар дод:з( 1ь ся 
до обраного. 
Н161р е.nе,тронщ,,.х cиr.-3nl1"topiв Prologlc fulrrum RMX РІ'о• 
Bite Alarms Stt 3•1 
CutнUЛІJumop Prologl( F14ctvm RMx, Р,о ноеа pUJ/ю61u у нопряw1.у 
1нdи•опюрJ• (11-0.онн-. 1иrононо • ци,11'4но,,у ~uюОнІ Ja та~(ІЧ, 
Jдоеолос, 6, np()(JnІJІ.1 ]ОІ•ЩІJН,м ІUlЛІдом woemOf'/'Hi(A (У'ІО(НІ 
ffl("XHOIIOliІ. ІЮАА(І~Он, (npournJmV tоропо,у ри6а11ку І JJJ001'tl'IU IJ 
6і4•ш (ОUфортною. СиlнОІІrJатор оснощrииlJ еи(ОІСО'Іупииоuц 
&10/HlfflHIJtl paлucou iJ JO.tUCЛIO... ,,., JOCIIUHI08tJ~H4, Jotдlll(U 
точНО"')' н«mpowOklUO чуmІJUІоtЛ1І іJо:мна 8Ul'A,QІІ&JmU 
110.UU'A«oe1 с.прпt(..а.уеанн.- 11d жsил-. чи tІІНру А11• (llltttt~o, 
(ulнaдuoц/f •и•орс,стонс11.'J Col(1r'fIOO·op,o,щii <е111111од1од, •кW 
~сим eu6purrш ,..щ,)6.лt.W ,rooul'fяmнvu 1uр1щ1т 1нdtAot1611 
iuюnu •~ант~ (чtpeuнuiJ. JtMkuй, <ин1Ц )l(QlmutJ фІомmо•W 
mD 6u,Ul)J nomy,«нІJiJ AІtmaAHUiJ динrr.-1« nt tJOJfl~11J/Щ, 
,vao,,rm11mu сл,монн• нnt1'1m "що ІЯJООм" Jмо•одиm•r• щ, 
.._/~(ЖЮ711 
1 
9. JІ8ТІІсневиі ...... ~--... 
J1pll І l'OllolllONJ МІИJО, користуич 
i,o-.C баЧІІТІІ СІІІІСОК о8рава'1'ОІІрІа. ТІІО8 користумч мтеrе 
JІІ,ІІаJІІІТИ товар а6о АОАа'111 Іоrо .-о xouonca 
. . 
• 
Ри к В.10- Списоk обраних товарів 
10, При в • ~ в І'ОJІоввому меню, користувач 
. Т~ Користувач може 
НР ~1 І І\ 1 
\ ' 1' ' 1 І оо \ t t () І 
J l ,l tp1t ІН\ 111~11~11111 , щ·нн II н( ), ,,, 
, 1 РМІ1111 tІ:АПІtІ 1111 '•JH 
"'"''11 ~ <Bt \11рннн, ІШ І 
' ,р,, "" І ІІtІІ(ІІІІІ II І II І орн І ft f 1 
нн11 он,,11ощ,110 ІІ tJ' 
~ ЩІІІ І ІІ СJІ ІЮ tcpo І І І фоfІ 
В.., •o-ttre r10АІл>11ис~ tuoiм tЮ...,ром 
1с11ефо1<у І ц11" б..>,ом7 
♦ 
Рисунок В.12 - Меню оформлення товару 
І 2. Після того як користувач поділиться номер телефону ЙOl\t)' буде 
. . 
запропоновано в1дправити даю про адресу доставки . 
()(t І 01 
І 
11 
114• 
( 
м\,.-
°"""' 
,"_'"".",'.' .,., 
&-.-.. 
-~(w 
l'nOo.....)J.~.,.. ....... 
..,1.,4с,_е.... .,.,~ 
> 
Рисунок В.13 - Введення адреси доставки 
13. Після оформлення замовлення, воно з'явиться списку за:-.ювлених 
товар1в. 
за. .. оменн•"2 
К1•ьщть roeapy: І 
AJJpкa: Hou ПоLСJта м '-~•ас" Відділ'~~-• '-'av 
ЗаGJІьн.а ,..рrкть: 14870і! 
Стан: но~ Jа"оменНІІ 
cn"co.- rовар,в; 
1.,·• Набір ~е•тро"""'х с><rн,11юатор,11 Prolog,c Fulcrum RMX 
Pro-B11e Alarms Set 3•1  
On>'c с"rнаnІУтор PrologІc rulcr1.:m ~м~ Pro - но.а ро]І)О6•• у 
нanptl"<Y Інд,'І<<ІІор,11 К/1,ОВ.)НнJІ, e,,,,O,Wt<J • <JWC'4•НOMy 
АИJайнІ. ~ rа, ..... 3Д.)В,)І\О(. 6, npocr.,u J08><fWkl" ВИТІ\ЯАОN 
JОUоОТЬСІІ сучасн, rехнопоп1. nокл,<канJ сnрост-_,,., roPoOOBY 
~"У І зро6иr>' 11 більш ~омфорrною ,~,.....,3.1,ор 
оснащемиЯ а,<о,очутпив,1u wаrн11ним ро111<1ом ,1 ~•,.<•ом ІІА 
~НІІ. 3.1W•И точ"ому k.1СІроІОВ.Jн•ІО чутм,еоп 
мо.ма --ИТИ nоwWІ•ОВІ ,працьоеує.з""" ІІ!А ,а.-JІь ч,о 
ІІТJІУ,Д/111 СІІтІІ080і с,оrм.tJІІ3ацІІ ви•ор.,сtан"~ баrатобарен,•11 
t81J№,II/QA, ММЙАО]8ОІІJІ( 8іІбр.1г" найбільш П~ЮІ•н-.,,, 
upuмr~l3 wectИ еа~нnв (черео1<иІ\. J~,ц,н,,.._ син4\ 
--~'-" •• бІJtиіІ).Поту,..,,и" ...,,..,.~йр,наw., не 
..-o-n,n ponycnrni oUІІOUt<tdl н.,ат. 11,u.-o риозп,а 
JIIIIIWIIWJI ма8\оІІ(Тае вІА см~стt 
ІСІ8,8Іm,:1 
~•4178 
t:J 
.14- Список замовлень 
116 
я 
n1 .. н к В І ~ 11
-" ,", ВІ t'M ІІШІ IIJ'Ct 
1,. коли замовленн• отримає c1a1yt tВюшt1 ,н 
видалити Aoro з, nи ку замовлеttих т0Rар1и 
JІ•РМ•. .• N 
~томру.1 
ч,,,.а-. Но.8І. n~ ow,,. .... Ч,е.рt «м lhAAt/lf'Мtftl ~
с:т.-.-а••-
("8ІС(ІІ.тоuрІ8: 
•'11: Н-8ір 811N1pDlk. .. ОWММІ»ТС1р18 Pf'Oloa,c fukrum RМХ 
~ Al8rml s.c J•1 
Qr88C: ~Prolo&k F\krum RМХ Pro- НОN ро)р()бuу 
~ ~ IUIIOUHНJI, ІІИІ(()ШШ 8 k/ІІСМЧИОІ,І)' 
~ з. т--. 1,АІ8МООІ б nрост.... J08ИlwиlN 8МІ'МІА()І, 
XONIO~ ~НІ ТЬНОІІОІ'ІІ, ПОІ'ІІ"1UНІ сnрос1и1и 1oponoey 
~ • JРQбмти І биІ-w 1ом+о!)rНОtО Cиr~~rap 
ооева "8МССЖОЧ)'ТМ8W rиrмтним ро11и,,;ом 11 :WJИCІOU ІІІА 
J&llll8 -рр У ІІІ. ~ ТОЧНОМ)' Н.СТроІОNННІО Ч'/f/ІИІОСТІ 
11Q8118_,.......ПОМММО8І~ІІІА•мu.чм 
llfPJ А,-C8tr'8080f смrммu.цІІ-.ормстаниА баra roбaJ№I~ 
..... .-,IDJ80Мf ІМбрати ~ІІWАІ nрийНІІrмиА 
.............- Ь--,М uрІІнtІе(черІОtМ\ )f.МНИЙ, (ИНІіІ, 
........~   ,. 6ІмІА~ ПОfУ)ІСНИІ1 Ntfllle814Й ДИН.МІІ '41t 
А - npa81JC111111188R8• ..-n,мщо рмбаІІU 
......,., .......- .т. ....с иктt 
нано замовnенНJІ 
117 
4R~. ЧДГУ.2:\ l 1)1 7-0U1) 1-01 І І 
' 8111\:ОІ)ІІС І'а\1111'8 дНJ • 
~· щ,~)' (ІІ ,щ,•111. 1щмІ 11 і,· 1ру111t11 1н1 ) 
1. І Ірн відкри 11 і нсбс Іорін,, 11 t •11111 ~11J110 !\1u11uJ1)1,up МLІ• ,м11 1 у 
-4щ1есс1 рува 1·11ся . 
..  
Рисунок В.17 - Форма ресс~-ранції менеджера маr·а·зину 
2. П ., еля рссстрац1•1.. , м~нсджср о_а чн 1І > форму ав юрн ,з ,·щ ії в пnнеЛІ, 
адмі11іс·1 рування . 
Авторизація 
Рисунок в . 18 - Форма авторизацн . 
чить повний с1шсок товарш 
менеджер ба
118 
482,чдТУ.23 1 9 1 7-003 34 01 І 2 
-
....-oi.-~11кttCІeo 
~~~O,,.,. . I Cl' ......... !Wrr400o 
.,,,,..........--.... .-o..uw. 11881......_ 8ООо 
.,,,,,-....-1---.DІмo-...w..io... ,1, ... ,. . 
.,.,,_....-~1•. .. С•рІХ ІАІІІNІ 1'81,"( Р< І І\ 
1 
~,.._c-,,........,.1,1,siь~• so-
_,_ ~---Df\S, SOOмO..U-
o,i,""8" .......,_ ...,.s.-o,iuo- ,ооо" -
...,_,,_... - Ь1•оре-•С•рРrоС,ам4.1 ... 
....,_.,,.,.....--.мощо.І',. ...... f••-ІІМ•І'ІuІІо1",u.,. Se1J,1 
Рисунок В.19 - Список товарів магазину 
4. Для зручного пошуку по списку товарів менеджер може 
скористуватися фільтрами та розширеним пошуком. 
Пошук С) ::=.., V 
аю 
а 1м·я 
а Категорія 
а ціна 
ІС В.20 _ Фільтри списку товарів 
48" ЧД І "1 І') І 7 (Ю \ \ І О І 
5· Менеджер ма змщ до нш1а111 кn1с1,,рІ1 ,сш ,р1,, 
Рисунок В.21 - Вікно додавання категорій 
6. Менеджер має змогу створювати та редагувати створеш.  това ри · 
х 
Створення тоеару 
ІІІ• roupy 
120 
з 
4 
5 
Рисунок В.23 Вікно створення товару (додавання юбражеш,) 
х 
Редагування товару і11 
Котушка коропова Okun,a Custo1'1 Black СО 60 
І D/AJIHЩ" 
2700 
Корот,щи опис (М,, кс. 1000 симnоп~в 
()ku111,1 (11$!<1111 l\l,1ck - нона •01юr1ов,1 <01у1uко1 1 •юрн,1м м,Iюн,1м 11uкри11мм, rр,1фі1ом,1м 
корпусом. еиробле1,~ • рс1рост111 J дерев яною ручr.010. У котуwц, t перса1р,1н,.. га11~мо в•А 111 "111на111:sа10 
мод~леи Trio, тrльки sapaJ воно 3ро6мне wи-<д.О рtrульоа.,ним, ~ також J·Rвилася круr11.1 кліnсз 
tн1 снгн,1111Jа10 
НІ\ wnyл, Чудооий о,1рIJІН RK для 1101.1у K(1f10Ma. !.JX ДІІН мор1.І'р1tОІО ~бо СПОДОUОІQ uудИІІ'1Щ,І 
ДtтІІІ~НН~ опис (Макс 4000 СИМDО/118) 
sм1р· 6ООО 
011 
t ІІДНОWfННА 4 5 1 
"'".~ 
ІС В.24 - Вікно редагування товару 
121 
482·чдТУ.231917 003 34 01 І S 
7. Менеджер має змогу бачнтм сnисок 1омовле111t 
,о ЛоrІн н-.~ 
Kl,...kt• nt••PY -.,.«•• 
,3um13 •38063[ ] 
' 
13um13 •3806С ] , .. 1 
,._о6Р8Ж. но р,wсм s 1 no 2 s 2 мruом 
Рисунок В.25 - Список замовлень 
8. Менеджер має змоrу переглянути замовлення для отриманю 
основної інформації. Також менеджер може змінювати статус 
вmсонання замовлення. 
Переrпяд замовлення х 
ІСИ 
П - 8і,uіАеннJІ №1 
◄ чдт 'І~ І сю 4 о І 
• місто отр.ц,,уu-.. 
8МІС'10Урм~ 
Рисунок В.27 - Вікно зміну станів виконання замовлення 
\О\ lC) І 
ПРОГРАМНА РЕАЛІЗАЦІЯ ТЕЛЕГРАМ-БОТУ МАГАЗИНУ 
РИБАЛЬСЬКИХ ТОВАРІВ З МОЖЛИВІСТЮ АДМІНІСТРУВАННЯ 
Графічні матеріали 
482.ЧДТУ.23 І 917-003 90-01 
Листів 8 
Золотоверхий А.Я. 
~~IIU. Ст)'~ент 4-ro К)'рсу. rpym1 ПЗ-1904 'Зо JОТО~•Я А Я 
ер~вmак· Пера) но1СЬІС1Іfі < М 
Рисунок Г. 1 - Слайд І 
lln'8II реІmІ є qюrpl№II реміJ8ШІ теn~ бо1у ШПІШН)' 
108ІІ)ЇВ 1 №:&ЛПВІС:110 ММПОСІJJ)'В8ІВL n-e 
_....,ra q)одаі рябаІD,СІ,ЕОfО coopuatelllll чере~ 
.....d  Є саореРЯІ 3JJY8IIIOR> Т8 
_...,.,,...,. apo.usiJt рвбеWJ.СLКОІ'О 
4 чдl 
0....,..... ІМUІ•-а. ...( )J\) Проt"'У ІІО8111t1" а11рt11ш111 м 1 1 НІ 
• cnope1111a ІІJ)акn1'18оrота 1Р)'ЧІІОrо 1111~1-en\;\ д-1• koptt f)• • 
- ..~ --- ~ h 1ar.toa., .., н. ІО" РІІІ 
- 11~O ll.ll1t111 тоеаР) t.op11cn а1tче)І 
• ~ '1D1118c't))) ааюа warauDI) мене.:~жероw ynpaLlaн Ш t аара)ІJІ 
1'8 'JUIOIL.~ 
Рисунок Г .З - Слайд З 
Рисунок Г.4 - Слайд 4 
чд'1'У 231917-00 90 01 
Рисунок Г.5 - Слайд 5 
.. 
-
СІІІІ 
Рис) нок Г.7 - Слайд 7 
--
128 
482.ЧД1У231917 001 90 01 (1 
.. 
Рисунок Г.9 - Слайд 9 
129 
ПiD.C)'~tCB}'t\,,,щ l'CJ}'.ІJt-т.i ІІІ 
le<:t) nn111111 мо І,;.І\П Clsl!UiJIІ, ШІ) ВСІ мnзу 11 6ут1 
nрС!ТССТЩЧ'ІІІІ І }'СПЇ 1\llfn І1\Х'іІІЦ. 
ІІІ n.., ltt'I\\ ЩІ) .101no111 ю IJllll\1:lBHTII ІJС:І 11mІІІ~КJІ 
,]й t, llll.'JIUI\' Ш\ CllCT~\I'' 11 цщ 
• , <.ІМ~• І І 
. • І 1~ 1 l>Dllll !.11.;;; MOJl)IIJl\111 б)',111 ПрОТС:с.;ІОD:іJ/1, І 
(-}',111 BIU.BliЩJ 'fn І\ІІГJр;,JЧJ 'І . 
. · ~ 11 !lсІ(щ 111юб. 1.:щ1 'J ncpc,1::i•1c1,1 д.11111х. Вс:, 
ф}1DЩІОН:\."11,11.1 IIIL\turн І)\'1111 
• П\IOІt'~t<>1i.u11 і , спішно прuЛщ•ш 1c:c,y11:uшL 
Сuст~:-.1а пі'Івністю ві.:mс,від:,., · 
' • l\ІІ~ОГ;\\І та ОІJ.Ї1')'11:JН}fІ)І, 
Рисунок Г. l 1 - Слайд 11 
В ре1у:1ьтат1 роботи бу;ю рtчроб 1е110 nрогр.~мну рс,пі:ш11ію •~ 1егра,1 оота 
маrnз1111у р11б:1.1ьськ~~х тuмр1в з ~1ож111ш1ст10 :щщюстр-уuання РІ?аmзоваю 
моду.111. uк.,ю•шюч11 шше:11, а;~:-.11111струnання. бюу ,:хашrх тn n1no.10,1i10 з 
ТеІеgгаш АРІ. до1во.1.11юr1, забезnсч1m1 зручну no1,.ym-·y тоnnрів тn 
ефеІ(ПІВ"С кер) Bi\lUUI ::\Н\ППІІtІІ,Щ 
Рисунок l~12 Слайд 12 
130 
• 
Р11су1юк 1· .13 - Снайн 13 
131