====== Чат-бот для записи на демо и напоминания ====== ===== Инструкция по установке и запуску ===== - При необходимости распаковать дистрибутив бота в желаемую папку, например, ''/opt/otus_buddy'' - Убедиться в наличии папки ''config'' - В файле ''config/config.yaml'' указать настройки для подключения к базе данных - В файле ''config/log4j2.yml'' указать путь к папке логов - Запустить бота командой ''java -Dconfig=/opt/otus_buddy/config/config.yaml -Dlog4j.configurationFile=/opt/otus_buddy/config/log4j2.yml -jar /opt/otus_buddy/otus-teachers-bot--all.jar'' - Рекомендуется настроить системный сервис в ''systemd'' для возможности автозапуска и удобного управления У пользователя, под которым запускается бот, должен быть доступ на чтение и запись на папку, в которой он лежит, на вложенные папки и на папку с логами ===== Инструкция по эксплуатации ===== Если пользователь подтвердил демо, но не провел его, администратору необходимо отменить запись задним числом, иначе бот будет думать, что демо проведено. Чтобы отредактировать свою запись, нужно отменить её и записаться заново. Перенос день в день не освобождает слот, сохраняя его занятым с пометкой "Отменено". Перенос за день и ранее полностью и бесследно освобождает слот. Если после длительного использования реакция бота замедляется, необходимо почистить самые старые записи. Для этого нужно загрузить пустое расписание на прошлый год, удалив все записи. Предварительно можно скачать расписание в Excel. ==== Чат-логика ==== [[https://www.draw.io/?lightbox=1&highlight=0000ff&edit=_blank&layers=1&nav=1&title=%D0%93%D1%80%D0%B0%D1%84%20%D0%B1%D0%BE%D1%82%D0%B0%201.1#R7X1bc%2BM4ku5vmQdHdD9IgQvBy6N80e6cmNmd2N6zZ3deJlS2quxp2aoj291V%2FeuXEgkwkUiSIAVSlEsVM26JIkESSHx5z7ySN8%2Ff%2FmW3%2Bvr41%2B3DenMl2MO3K3l7JYSUIsn%2Fsz%2FyvTiSyag48GX39FAc4tWBX57%2BWJcHWXn0%2Felh%2FWqd%2BLbdbt6evtoH77cvL%2Bv7N%2BvYarfb%2Fm6f9nm7se%2F6dfVl7Rz45X61cY%2F%2Bv6eHt8fiaKpfa3%2F8X9dPXx71nXmcFb88r%2FTJ5Zu8Pq4etr%2BDQ%2FLuSt7sttu34tPzt5v1Zj95el6K65Y1v5oH261f3nwu%2BMuXX%2B%2F%2F4%2FHt33791%2FfffntMbj798%2Fofs3KU31ab9%2FKFr27ZVXb4e82ubvlVmp%2FCDl%2BXh6%2FF5%2FTwtzhNHY6L8uTyc%2FFr%2Flla55RD8cPfO3Pw3%2F%2Fz%2F%2F6S%2F%2Bc%2F16v7x%2FXu9U%2FleeVz3Omhi4cojuR%2Frw%2FHbw6fE3CzDDyEAo91o2%2B%2FOPy9BUMtwfHinJvyPctLInDH5eGgmQvqlfZ%2Fr%2FVpnH7t6u4385JE3r5ruttt318e1vul41fy%2BvfHp7f1L19X9%2Ftff893Wn7s8e15U%2F7skoJe1%2FXubf0NHCpJ41%2FW2%2Bf12%2B57foreqTyeq%2BKi3ys651lJ54%2BAxuOSoFfl1vpiBquoL%2F9QEmAHYhQuMYp4k9%2F1%2BtNme%2F%2Fr%2F3%2Ffvq2tWYr3h%2FKfn1e7L08vV3KR%2F8rA%2FyP29dt%2B7vczxD5tdw%2FrXXHSy%2FZlbX74unp4eHr5Ul6%2Bv0KPm3%2F6Uv738Bift%2Fn8Ug%2Bw%2F2H2egCv%2FSA8bhrl3RzYk%2Fi1JtP8rwSfbwHZscOwxdX5zL7jEfNjxaM5h%2BHEoafY4CObJ3zkE3zSBdd7pKB8s92k3hro2W%2FLXVAcxyBy2EfVRrtzBnT3%2BC2AnkW1PcHb6uedVVuvGupO78H8eOY8bVo%2BkjV97pS0TFIGQfLOhkQ0GegnBp7o2n5F9%2F3yAWZ%2BYGYATDhTqCFTMHAtHI2FmQwJhlwA7EvBe7u0MvL0QL4S9aIec%2BTmyGlbpM57F0cUeJDQ9BSvnvdM5eXT61e4fwQYZeFwePdRMpvchDOrzSwcjsm0ACLsNzl2l9pYfr%2FdbHcWll8J%2BfmzzP8RCL4n6gWYXkgmt3gaasB5f1YMXtKIRvYS1MOauTIFLCK1sFQswU8uDEmwDnpnWAvuLs4CnGZkngjcNLWA4%2Bh94LFKjMXxns2Tq5Q45K%2BoVWrkn803Z%2BzzZ5LJ1y2jHxU08DOzZsre4QgaIiB9mrcvfpI0By2RjdmyaSD4D8jrO%2BwQxIeLOyGR%2FQb8JYWVCBBORuk3rJIbGqZRGMXj1sbrJRhHI9v%2B7x3gMoazmLsv%2Bws3YLvOG5d2L2U6AmKjyLhfcL37LdZbfI5tQDo8R%2FkaKThNggkyrIWD95FgHHMjZa9NF1XPSzrKP0DxBdIQeOUKC%2FZzAUngxlkQC7bMwzZcQ9IGs2nvWp9gKEGWR2q5udSjoZPRbCn7vQ12pfYlSNi80xNpVhKOAF%2Bh4aUW9t4pfk3ACriooenLWsCum%2BVuro0QcNOi54DSGbyBAM%2BnkQVNjZmyao4gnccOjaX2Y8ApgNBmXt58hluPAgUL7NKaYRFi7t%2BoGUFsaFj4iKbuLjKAWZ10B5gKs381FO6IYtXEI4m02oRwh0DoiO1pX1LrbjZPJyNYQLSEcEdSgnIg4CA0VBdCXFWNUwa3E%2FyJW6dRy%2FCTvX%2Fc2QSPWxzHnBNS6h31lMpZgNTeaTc20YfQRazxr%2B2bQqZ1d7B%2F%2FdyJ8R5jFVxtnr685J8368%2FVYEcZCWecM6HNhKVBn0eO1VAp5loNjR08uNkwIcyGaN7WLw%2BLvTMg%2F3a%2FWb2%2BPt3bU3X%2FvvvNTOvD6vXRfFl%2Fe3r7b%2FD5f%2FLPbJ6o8uvtfmaY%2FvJdf3nJ38tctf9SXKb01%2Bqywzd93evbbvur8TOIpkV73b7v7tcNsyLj0luy2n1Zv3mcuH6wPCEuEcAVJhZYH9utN6u3p99s%2Fwm16OUd%2FrZ9OqhZ37R1mVn0FTFEN8Wbl1dBfwceSNkDSYUGKmbGGSgnlNV3cNrX%2FQmvDQ8s0X1S1vxc%2BHxpnZ9%2FKJ6g2hBmDfrvkZT28wzNXtE2zGHmjcao%2B5y%2B98b56z0YPd2vNovyh%2Benh4f95de79evTH6tPh6H2e6VclnxcdX2lbvd7JRc6Vp%2FWm%2BvV%2Fa9fDkh5YzR3%2Bfnwj9xRjaCCsdF4GstHsZx5JGayuchiYWNmFmSrzHiGwHgmMnuQ7efPr%2Bs3RF9BKErI42HXxTsNt%2FmkKYi4jXBrA3ZP7P38tNkAelkrvkce%2FYzgl2uxt%2F2Mg81iWtgcIeQSUT9oVok1jkr9kDkY6WYkGi60VaHAtUKay5958%2Fptkki2277li7ndjx3T9Ni8cY%2BGNjaXKkptkghCZ%2FoKHTOiUW4EVIu7kAbQe1SpNliWnBQoBlA9WlzJpUNSu8ft86f313a5vhZ3%2FAV5zrEQryjvf0JACd6rwcR4Sbn%2F6xnKwYXfxk00L2DdeAEt9LfJ%2FA%2FLp%2F0bl5L8avfm8r7D4fI07jIdxtIVzXQYU0kz0%2BnLS2x2Jb%2FEm1ysePnnXx7%2B%2Fsc%2F1N1GZi8luzoV07EpNaootSvXQTQfC2ekgfmODn3DUrixZk%2BQyXgyFbN5gzCVxBaXdZTa0eIyGpWNx1ckzVcyGCnGbNsycukZe2NDXJsxLcKQHNfBAS2KjPI03E0gHk1gWZO5%2FCkjUGew6DTZzc7UjT9VLOl%2FoOpSaycam7uEU2k4yYVOxVy0scaoIlFXa5OWoBgfV4nRDzoBcqyUdn%2Bd%2FdTiUitBx2eqo%2BeivE3RrvrkKzAlyBKrxhaYoprw9FvAAl2qPyOxyWziCYtN2sGjgU6MJTNFhLiM19py3BxjboTIxT2Rqx8k9VVKR4CyibmCRJog%2B3bWmT3roZBXSWKvUiBnkGMiVSM4dxRhzyzdya9fVy9XVMbCQYKfvRYifJESsXtebWqiKY93kx%2B89TqAb2PiO44f%2BMaMqkO%2F9UXGRwWNdygapzmONbWjCVAAEwzCdR1jZMQI1MWYCQT4tAs82TcjT%2FY1mC0YCX878DQXMSy100xNcBVmUWyNEIEWDtYvl4f48TAxFyq2%2BS8XhKU2JlA4G0oTjtXAeLNwo%2BuXNqWwxtg4KygT74LIoS2GryNCDIvTIPHPuo0N02vuABkn1MsUcUXOVjNxZnBOFNh2MJif1cQImnA0HdkGLpyf4f7IbI5L2YnEmHaimDD1heXGQhMD5ZWyNkJDYLQbIM%2BtEUqoPgDt4ZEwuTdsTU3rnW6FyP3c6JBHODJOxNIlRe2EGIcUibCfBhuRp9LkHSnBWBkpcbxhKctfBfriGE%2BalbT8y9%2FWu6d8HvcK%2F%2B1Ixk1tMZmIAsVDBWzMOLIFiQiNNLAlKK4J2TA5yS7fRpDHqZw9T6liggYmEPwxU2pOg1gzKIQIbYsiFsbKJGIcyqbS8dxzmroJnm2nMdTFgXBd5eEIMivZIHTlGR5%2FB0a%2BIVS0HD721ChKze%2BoDFei1kWrCndnHnpmzwcp86IsC3QEVd44Ums1n%2BuzPc2kky%2BO0mehUgDzjiyN1KQhWsFBULp%2BGkikMTw3gEijhB3clRGitZZxRgkRSmh%2FwELaXMDoNinaIzXSaGRTWM3lxJq71GF74yuihHu8ygYBdzcC9%2BGnvcB9DFkEWHyJvT8psfpyTMVKuzeGijju4gIw8qywBNpKhA1tw%2FcXQSfmYM%2F4XMms%2BmdbsyTGCl%2BJVCoUFzZyDHFChb8H1fKh8YYUIADiVBi09NWcBxdiV%2B9v26Ik0mF0KLCmgRiUVFjnjriLUilB3cMlo1G20eNBqi%2FgWKkR%2By9%2FW73li%2FtyOCJYI69oh5pkUlAT4QBPzIl8sQUPlHhmjgXDlppgQZgDC9Ehcv0cP9nmP%2BYkproJ4qU88%2FP4SNFN3T3kXrpE27wbQ%2Bi6KmLSootAYako20HwEfVeKqYxGBejNOjsFPW4agNdYUkNYXNRMkcf6g5KS%2B%2FQz8xBSQ1oQVo6O1E5l1BVX8QhrBAqCjBlM6MVyjFM5yH1zAgFZyTKzSk3YW3jqBqDGM6hGTxJLTY%2BZwc%2FRKMxfP8N27R%2FKP6ubHNEHKMhvNMPmbDpLRmZv9PG7LLaLVnii001nbovYw5phB6IMSMpEKsMw3Hl1CPwkUQfCw0aoYiGiuPy3hrBZiIYohCriftHR6usdaiBcSRz6YTJORfzfDUzYNYW5x8obbZEgEBpxXkoyd1mSLMRE5VTKsrkJMbQY0SQiaBChJJMu2cB1QwUe4YZB6MKV5%2FjxvFhe%2B2mAgZlYhI0D2YdqhmYfRDEm50J2zwtwuAEt%2BtdjFajJR1GjTEgETMYlcPnrEVUIIJyjkGPVqfJxHwhUYzQAYuU3jATZaeFGVeBkWzaMFMXO9MJa4IpLWwuYy3ShNVZbJl0xtOxsEZLw01G69gmENc3j8xtKJz6YCkTJpwrASNAa6BJS%2BjrQZug993s8JN53zMi9uKilAbZtI5Siv1NvVXSkR1Xmev8ZIpQSJfnr5BmdVu6j9wpk8TWJMPInTpVVzOD8XiBuGDFWFiBy070xoqR61dk9RVxGKjmzOjiN0QCDJQ7YUKiW50eVYI2sMSAZEGa4E15NyRZGE%2BisNx5IA7Udd2jEvHMSWKDBfqZJbfQVbHbamnrJJ7KS0t4Z9OaZ6view%2BnQR%2BFztg0T4V7YLG23hupc37r5JCRupH9VK1uUjMTxwh7zWaNYeNz0RZW2iAMoMgkvltCYjyUkEjGE6AsydotjprHGWpQNRvXThgz5Cc6agGsit9u9%2FrfeTw7Sat2gC%2BKcmja8rxsYuFmm1Knk%2FnZw4c8G6Als86Hjrem3hnlKPCqRYN%2FVvANtYS3dpQ3jMeI7EdnsGnR4eHIlH%2FzPlp9rS5HXWoQXUpAwVn5ABbEwyGKz9aVbiNS2NKIji39aJiZEPnCJGYOlk3P9d2GCza5kv4Ro0e7gGoXqdVcm%2FnGuGfTCkyZSZRnyVlfDX4mMjzUyLZdroNjLjz8wsMvPPzCw4czcqdOyQQqyWxsbjxwX4uIx9589Zj65d7VD9ortupc%2F4mw2yiLB0kpi2Kb9Y6dUsZZTX1wmEDt9r%2FkoIc3FeHelGbqdiGYggke%2BGezOVzo%2FJ%2B%2Fhb7ayQHctRFDkT2zMCb6mcQlDmcjpn9wKqGarHvg2RaaNMuV3HUGmFhrGQGPPPmJUSrPieQkxDlj8yTFRVqDEGdV71e7pUbzIHF22tJFpsmTYdyWR0n06%2F%2BXBKnxSvboyHyZuXbzTISZm9psJiaqZ4kiXHk1wiLi4Ny7JqujSxTKxDEu6pDhUe3gSdUZyqVZzHDlmBxXb78hqwNWdhBu50xyQH7QGYdcZkZZNApyJxoOUrZnL0BUmjbObSQLun66cvNMjU3GuefY1WDq5O8TV6gtAGC7e1jvkBm%2Blhd1qM0pUixAlFwchrGlRGZn1rCxj9PvOSXyBrS2d9fUuwas1C6MB%2FNXJPP3sM2XZuFTiQkZCmyNcMqmr5iAB1IMyRtDiwk6KAuLCdCQh9R4x5zXjsrnIE3MRDSnLYktO3fK%2Bjw%2FrXQxjPHySHDr4kqsBTcHstrRTqur5wZuChdX7Q1ucuyUVM5rbJh1We2wlQ%2BssZh%2BEJDjHfJLqu07ZYRDOa%2FcaQo1JL4R1bVamGcRmwlEb1%2B6ctx1J3Q4uk5xrqv4Q62NOXe8JjsNj%2Bznyzm34%2BjTTpuT5bNwPnByZCdHXxeH3WQsd3v3rW13Vm5PXe%2FuvJJhIlECxakOzrxqTHhTbtALeE0nVhMwl3E4YVogXjOe%2F0GDAZ2eUABwapuSPDlKs6IHPzOD%2FHVDpwD8Pc13tqOtskOdmke4238CPEK48ez5Y5IJbWyq2c7%2Bi9N56yucpYpziKZdQ8UoiN2UFWPkZVU0YwcI4GVp%2FMmIk%2FtzuPPGDfnZBjw4zHWiXuFwwgTSqXMB1BEuTl7PnMu%2BtYIvaZLtwqlTGrp3piSXTpzi2MmSXLrZkh81s7raFpfUamp2qBS7gCbeKRUY5zKbFqrw2EGCvqXCiLESOTaq1Mg%2Fl0LjnWsDVftywhVNZ0IiksMUNyRwDdql%2BlJr%2FFJrvKcmkMSEJjBquXHTp%2FHHrjc%2BOXa%2Fl7Exu%2B9Zc5yLKMN0N3J1Jq6f%2FYPVHe%2FGp81WmzCfRtH8UozGpCOyrdUl%2BRcw%2BGKQS%2FLvJfn3x03%2BPWEBD8IapxLPukeZqEfiIwW4xrCnY6Lg%2FWPwD%2FRFufIet8%2Bf3l8nvaoxaucoY8L3JwiZfLBes0YD8JTJy1nqVZPFpIl1CqQ0JvoWe32R4Lbavbnqw%2BEwMOuj%2FDjG0hWdH8eYSprX3jfo8gwT0E3dbu2ojnrGvMSJah5ocI2gpgjjlANevAX9YG4ENpdKNx82oShBKCnfBE76NxvRAR51cyZ0wjiU%2B9oaLD4OXtH5vD0TbtoxThfqPzuMS3E6LUOxeL4Yl0rM2Z0QwcFRrtHNoaOnzhrrgjkfPjDW1Xfdc00HRvfvYHwwgTU39ogNuho8za3fC%2F0GKPULhSFyUAOmJQbpT%2Fvz5ML1vo1e%2FQkFjUodfXu6gBw1tBm%2Bm2%2B9Pje3ex2LYQ33SkyKec2EwGV1lC7P0L0ioztWhsYamoGpGsP9xU9f2f%2B7JLK37P4JewZO6sHXu%2Fziwb948KdZbiLGUB0LQqgY17evBs7JDubbv4gbvTWbFBcVUn2DjfcOaifYeGxxo8aZ8SHiBALICSFL9324CALVzW0SPqmhi2XPTmoICYB9zaC1qNhua4y98VM71yaDn24h6CTtm0g8czI%2FiMEGh1AiX%2BPcWrMHQMqALphgXduFUwCwqk4wBj4Ok79hPMQytcoOzBnvXnpgKpJgO%2BZNrJrpTHCsgci0t%2BHJGcv0fR4NxlzPybn2kw%2BAZiEzPD5aq3muqPSOgLjmX0Lsgl69iSeT8yhm1T%2BkReD4OX%2BlNsNmy9GhLHZ9O2fdsz4Anukde2ln36BNnWk%2Fe8Iw3rMK89H1G%2Boptd5OXAuqXazBiaMIRoQ1eFwXcyx6ssmjzSOjmzr6dzs4PwsGQWvYSXyE%2FWJsf3PsuizOrtrE8fzRbNUJ16GYORxyPEtvTLgJxoGyfj1ZxsY%2FcbH1%2Btl6VTikxEMNjpQ1AfR1GZKulJh%2FjYBcBzWRa3CJSTFMqw%2Fl%2BUUEwo193ERBIInOfJbAgQdvzayhkBxbiY4CHCGTJslUSCMMF%2BIu6UdMasRdFAppCo85pXpx6EUK3k7f7hCKYgWhEMEnac2bmi5lRbgndIiKcvzDU3Ehi%2F%2BB3FY3mbJuIaBa4aauNsw82YQtsh%2ByNSjkFGmCI0WJKCdKhNILyARC3HUioF5AuAVu%2B%2BVCg8C%2BsVK3G7TdS9r0YDc%2Fq7TpHwFHVOyJI8NlrcbDVDWvSVxti2DvY763tIOQcvox4nbsLW4n0xK3sxTLyGlvw0QmnbFGt%2BK7XqazK8gcApW6myBE1qosTbtasyCKce9XeQG7GnKHlRqthmlmSMo%2Fd%2BDka5vrGXaaHcfFQvAcbtpqajOSIkzaWeICymAmbdMVmG5bDj0lMPw985AxGur2GNHP1r6I6iytUrOj5Vr5A0ZbRmKcaa9O3pFsXySA9Fbqe3MjJ718ev1KKVyvj6uv%2B4853aw2m%2FVm%2B2W3et6jD4jZsX4DwTxDyVVhKFlnNWnvMkHJpqmvJTw1cMHjKFm7gjDCyCukt2AZvYs7rTbdUwB6tjs29DDljFgHJjBZ6CKApuIeAXAJQRa433NAsiBcwQ0ytV%2BVhB7VDvqUgRmzoovQ1eOmIvwSxT5zoWcOAlwYGtQ%2FooUpO24%2F0i8%2FkigsJJFXVIBVfwnHWHsga0YWBQAy9eIQmzjKyNj2m8XamWXVmxozMkAQJf5PijJdmkP0qMPSs6foEeikN0yrEm%2FkgMngGIvkPAP%2FbB0g7u1AywcW9lC6KNdoKFZj9%2F4wtVmqfR2i01qi7PUKVZtFSDQsqvYzoFpP1oWvUYKev%2BUaztfH%2Baevzy%2FzzXaLWMr2%2FW3z9JLjzWFar2A48In4DIuQ%2BEHWGneRQx8Lz2b0hsdiQwy4%2FKIUEmhvDZQBMiAnIBeS0fQ9u2Mta4SKwff66v1tm5%2B2vgpopmFIuY10TSW47inBMsRg8gVV2rlEWmMXswp%2F6GVDFg1YyGjpaJ5UAdpgyvNdCCue%2Bji6sWImV%2Fx02vEgdVJPW7t0OnIf6q8bRygAvou%2Bilr1Zk7xtaFlPara5O3HqDYqwlUb3SeHRZkMQkHczjGb4UoSA4p1VLm984CFvqn79%2B%2B734wvqI%2BtrhaP%2FC1v7brt1Gx0GSqmrKKehUb3wjZCS%2BYLcTkZrb6D00q0aHhqZT91VMpy1S4qhgy7p6j6hB9LWTaoMSkYFTGyIgtk6x0QR6naf2eGoyNUuz8COtUZmwWRTJcyJOV3EQ95XVu0scRDqrzgRxEPVZ2296OKh1RVvGDeq4CWBl5jvIJxKajWJGnwiMCNUBALA%2BEx7nsVMQPYXHE2jjaOKpElGWEAHdfR1rFC2YWjduaoqS9HVRNTRlyOmiFDvH%2BwbGJrCKk2vI%2FGTmusLT72W9i2DEVVQsR0Yy6h%2FwBajBtAk9WE0HmGIMDUsdhhGzBLQdjGbfKm4go7OVDWBZwrNz%2FMTnaxeBK83JxGgvtHjfhLExzwlxLW65FD%2FogKV4ddEqRxG0libgER7WYhHCxuEWp5xu4L1FMm44QsQDkvBkuXER2rVk1SFuhmpewT3nOELOCdqG524mRkAYEsk8bm11275hku6pxFTurE0AIBUQHr4%2BjXAWtZfcQgm5pqVpdgUR%2B%2BhYNFjcvidDosUaHn7PjWpHXYWJ0v35KIXDEZduBbbUMNzrNqWhF8HI9XHKybwHCcCzGueMSkz5gw1t2apM9CVVKOZn7bxrKMng8LZyT2OQ11VBj46ca5Y3Y4nlpHOgTPIevJR%2BeunNuSMWfR6dkrXdappDpIe6FsZDDG1jv3tCIzSOQ39iDXDuGZHMGFfeaixuaxAM%2FGvFtiFpfc9LqFv%2BckAi9%2BfdxN4RTB3GX4vnAyuTbz9LsdajR6V%2FOagnpBst5Oi4eqqQbLxDEiRQK4IgxHgkKIweo1Cape08cWwI8Rpn3LpxinxWSEaRxTptyexV0C1FDOqBo5Z7RjdaCPTLVTobBEsXkqeaKkUpFiqClyrPqTW%2BKE9ChsSB%2Bc3gjz%2Bm0PH6S%2FGHy0MCaubW7uSjh35SUtUhasEgmutdyBUMwzOgKs3QatcZkW2ICkV%2Bomxg9KlsZD5dxgWdEeRefMJENfJrw7LGpX1xq1LZomdATNWQs%2FuIYBAIXTCUB65B%2BHlYxrgZTM23MWT4ylcclseZ0znNboLzPhsTKcyTY0D0tqXCfKQXyyBUhdu9QuzTwqFF6S3v%2FRq5DJGNlsuC4CdrLOGibD8fQNqPpWy%2BwPFoZI28FC93CaDFhESTbP7EBkLo5o%2F%2BkSJzHa0KCR1XQPmrKvHbSYoqmxZd%2BFcGBg%2FWcmAlEZqlvJ5Yg%2BDL3lzrSVlMV9juwFNQz3MXHEJ%2BQ%2B3Rzy4ZuhdInnsnuh1K7JZFiEkHjBU2Q46%2BDSjtrGGpw3uD7ts%2Buu5M0cgnm3h%2BuhpFsmad4wWo9BkXXLROlerF2EkT89pMqp2e0lEiS45L0hwxkrYmNDRk2bIbcvj5YOnNjzn4AeCk2WxgMNsxasOkA%2FTxKBnIao3pAUslKHMqTw3Rrp%2BFBR3EYcSS5DohLl2izI6fXr6sUiBd0n6CD2zV4LuW9vpX7Z7p5XG6vDkm4tRHRaWthGZyOU1gRJlCRuG9axrJtRtmBWJd9YZA8zLJZlBmglA2vplxbFl45tB9Y5j4BFPrMeQyydzaicS%2B6oCxlHeoAdfUR3dNLHijXUh48R5gkTa1urjaPE%2FEgSYr4W50YS8wdvr5KLOFY%2BBzs4Ehrt0vtvIAfsw%2FFyoYXgipf3zcrMVQlbhOQRruUxOC%2Bv8YkKAHGuuTj6YExY76MJM2GUuS7FWBzYuDxsDjxOKzfTqbBH57lb%2B5IGPnnn8exkW8NLO7nBbn5pJ0d788NKNa79SZdFPFnTOONqbkqChv1TyQAdoT%2BQIfW16zXx6Asn%2BavyZZ8sPF3qIu2X2IuBsr%2B83alm60xIWEb0yvsXBXPjOEYOvpCsJv%2BrTkyGveBg3KCqmFYpeMDoO77PISrNCXcWbrkSC1HUAd0rcRCR5HuwdkmdTe6WevjWbmaNZScE42rWwtprJUdaBpsVsgB1V9I2Yt6zOC5tmQFKBX3dlK2T2zRHZEqGLolf2WQS8FKoYnpzrGrJT10h5qMWfuERSiOdQuUXqXnmMPFCtjtWtPlj%2B9Xy6M%2FhpG9GhhTRpBhchHwxEnMkX%2B4WI97miGtDszbRWAExsUDbhsY%2F3zqEOjVjkOxgDKp2YoAIoljp0Cvtzg1TKnMmIuSRmY1WA9jsQdpkWJBHWo6yd75wIYv%2FOXQydrBOjGroGD%2FWySJ1jDO3yZdKtbUh7R31nF4sgdRybB0xaJgpkkAaTC8MGP%2BMGypgbdSlY4yhhKmFHYNWStc%2BQdNGXnPtQDYSHhsKPajUY3dqyaRr5OHZuHQ%2FRH%2FBftr8cOaFcVM0NJS0S1GTKx2e4KQiniR9Gy%2Bguo4ZS0aWpGoqnQbBXtLDAB0U2n0glmcgl0Wd5LKQnQstEonCULFMMBE72bJDSmXDxAIYCEv8M06sIGIEm2vFIxo2r0Xp2AiesNIbEG3UlV%2FizYxnL%2F%2F8y8Pf%2F%2FiHutvI7GWWnRI4cU3IOM6sxqw9k1Z4iiB0bDuroIMSFgmAR%2BQtLA5CqRMKwNfgc6qF4RScZnt6J46bqeoCm8FiG9hcqsiOVwmjzSJNVo0HmnrfE4RWaQszh8lqB36pFrie43q9rWDcZ1o0mUdYTkti13LKScvpYJqET8fevppEx55rY7ktQ%2BoVQzLHk2oVOJMic7PsfBmi4Lh2SZo4gw3NFCMaq7JWBxypM5wt81NddAaDDUGYX2ITVKhylgqrDSicdED%2BF9WE2ghgq%2BOOS7m5egokQM0ZyQCywJZIN8zvVAFhNVvuEgh4fCDgvHzpbtnKDT0s4CXF7aCl3A3pgDEQVuWmIFGA293DejemRKcyLNFRtmEyADBJ6pHuOIkuqnEweQBN%2B2rDz%2BxMFy1xWIZpbHY6TxbZeZ1Kr4KwDoURGLWNwr0FxWtQETUk1Ny5WxQTiIDjwPIEmk3snVuON6khn8n2OQWz%2BHJQgwzZes04hzMj9v663r2snteYb%2FlppzXOs9AvsrdMQ69wyEdtloZRbTvAoF3ONkxCQ593LW5ynlg148qxGVAcRuezQKziMh4MrIZ0P07aaDBOpyXDDc7OGcl1fRzDWiPEMr3N6JltnecsHdkVGdW4Iqffr6Jf9adqW09Y35%2Fh5lszPoTBO%2FqzkH%2FIp%2BVs8fkhfv3j789%2Fvn2cUWWBakQ0xDONdN0cTaxdL6MLSS7%2FJovSGpFQV6Aqh2E1CUTuDc1nqXk4xeBbNU4GWix66jVkza26DMQfxiIwsrGlu3mJMl8sHKm3oijUAQIVj2bAmemSSJstmIzWM783F5duHb4q%2BGDN2zFC67DeLOFEbJjYViiaxoSwkQaQTEmEHi8sri2copdc2qdAaXdZ1ksubWKArVIp1%2FM%2BFanUDKRjlkTf4A48khyuDD%2B5BDUy6ZRrkbr01rh3pyx8cju0ZwhX03%2B%2Ffv%2Fyf26f%2F%2FbPP3759qv4r3%2F81%2Ftfl7pyaqvkWZd%2ByOlcyDLdr1kwrWQ%2FQXHY5pQ6lLG5BAKp5yVQFILSLmwbQJaH4nbyIJKzeZX0B2YBiuFuwrwrqqOb6Wf1kyfmhte%2FfHr92s042ns%2BliD4pkerWO60z0M99YKkJIzq8uyUGVqY1X3I2LrkSOvjwGFJseMPEURcEpXhwJmqx1BfSY5EvL4leBuFufGiaStJTviLcl6C2ZHZC7q59lQkM2kHk%2FMo6VkODFV44hIbHsMJZiTB0l7XhV%2F2U5dc80nKeDAv4VD1zqXlxm0eonRYFLFAYp5TsbNKGB1e1qtJaYTCBAoq6kpIPmoCXNA0UMEkHAbImeQun%2BEE2uCKqcHYTDeDwYTZTIcEk8BspklhmQqXiTCXSftyGTsVlJtom5G4TI367yPDphRQ9NYjps2DFJ3j0QgBk2JBchT%2BUx923j2l3oo48rGkE6FBpwo49fOBDZRzf7i9Ywjo4WK5Ob07yQSYohBoVtmc3Ht18%2BORVocGhyEkSzudzVrQuljVO0C37OiWOf3DiAh4cjh4LTKJ%2FnGqaVoPXb6SFwkzlEkTTe39%2B%2B43M7Oh2r01J%2FrY3XSOqonIRARFudaqiPWVv53UoWAxRdNLyp05HVITFffNPDKlPHWGb%2BQXQpQT2uo7OK2USOofGjmF4lKHqfZHMWJQPn2yJlXWFqlHtB5aUMh6a8Kv4FrXvdUkMrVH60WnrRSigu0slWHnf6Yti%2BE1IXLOCXubK%2F60yBSOCDVBraZ%2Bg3XUW2zSroeUJv1moK5dtnY%2Bw92dhtN1%2BvbsOgMMnTMbRuMobcbR%2FAsWP%2BqwNblgq0PCLiBmPW1MBLbioQbGVsoq2hVbxQVbXaj5kbCV6jx2CtN6f09sIL3LH8GiUyKYQtKh7GsjV8ot5TWcmZykPaKaFzaTt2Yye1qlJghrNZ2cQqJZ0oZm4ZyxHBfr1UAyPIRRtXGCNU%2B8dfsyCWByJG2VQn9wjZyeBetTx4SL3MjmAcrjVKpoXQPC8sQOKaXIe23GrcYA0XmdhjKJDMbaXSYIeBWkqkuQrUtrJSvfttZTg8tGrjf2QPwExiK6u%2BrLUIIsclk0mvMPz%2FRzl%2FbzyDFkTgYvYb1N4g2%2FIO3E8kaivA4BzjEtNsERPyRvoPNwm92TdhB9LszKu%2BGrbljrspq7ahLh4qERdF9Wnd2CwophVrwbnvpzHfm%2BrTfrQ8uLA8T6kpPZhtBvBbFR%2B32IrV53ib3%2FME32dYATYwbxDIIQHivqGsJZbJNK121lTkAZU62lsHy63NxZtxYwXgkCLGg8R2AII53LXTjRMU66QV1xM267CiJeKtvQEZcQfXBNpGRwT5x%2BouloakxA21WzqkbZrUKqb0Rzlel5zTjS3SLVu%2F73HI80WNY9TYx0%2BMkitYEHwifptzf5yBPXz%2BQw%2BhkfMVrWKaeEaG%2FAUKWphG%2F2qA5yXJ%2Bo4UxTdLBGjfVyHHSLnSI4nAkZolZ3iqonc84bxx0a%2FBqbH3Qop%2FdBrFcDYWM8GjbqrgvG%2Bo5GGBAah2loUIU3iU6B6pbDlPaJEmK31avZB%2FLagayGL44DZBlhGWdBgIwaeWSnISespbcocBjiUeSqcz%2B1aZe1lq%2Bfpw5liRoGy9I2LFMRkzZhhJH69CXaKM%2FHi1AXlMIazFRHJtYvILEBdrqw6ROagCLK%2FAZNXqRxyRy5sWkeWkKWwNQpAD834dCo1hHZuNeEZ0ODTGY9RpksDneici65oy5kHBVaggH5WVOe%2B9CWHIulHGXJyZx2DjnkllzX6udAGHNC1JGltwahPgdl%2B%2BqQ3Qn0FXawjHWObL4IBCX7x%2FXs8kN9o51ZhF2lVWXjkYQATW50d9M6PSb6Qbl3m614MO7NkUcdwdGArPtkUeu9TDQwSvN4ODodyjisKnM7sHjDDJceow2NM274d65IcTHPVzsDniqh%2FUwTxJcB8KQ5gDund85Dif92rOIsG1H892j63NrUgiwHCkNIZJcYiC6RKVBePzafcFgBlzv7XIfxjdEngV77vhb%2FC%2F8Iyz%2ByIGYripc0jzw0X3Et8EwRfGX5Y%2FGVVov5QMHrqAndDCUjD8hj%2BprPLzgTFmfUYDjTPPLQOOMay5mgceYgrHw4nGmpFMVd2UM1xD9NT0it6Y2LI749PbuuJ2QibQPJkujIUg5HXHo%2Ff7gy6H1b%2FvbIDutC4S4iSUK6jgnrcYhuwDTR0ta7RUMTBxRyq4ErO7gCskgvtxPdDsOKJ4htdL%2FwYbAuYnMh473dV7FIZ9GbihXZXERc5r%2BkMU9YQ%2BF8GgPH6A5O01KNln4pUkYUKRuGsNJccJQJZypOcurJsJ%2BB54oNS2UOJwnLRCy7ktYJa5RJMkM5bLIGkcSTWQjoG7vOdIw9SraqaxviJoBQVivPamnoGbldZV3XorW47azb2LrLSfX51rkP2pdkyTB4PqxzJoFBD4pIN1dyWZ8RYLvvoQc8pRYOpmTBxBpTPr93IpIZ1qfQGQM%2B8iBJJe6A0PCZn38LrkKdPV3ZNAU3jUARP4%2BC9cIh6ps6Yv%2BTpghBzZgfaVTPeeP7OtVGQyObhUMrzv3ShCmSs6zOqAkVYnudUmnqguPNA1%2Bbye1RGfDwwk2b7pzScHR5cFPJlTnCt%2BG5Vh6OtkmFl767VUwYtHtRj0ZEI3XivPI0YnnEv2vdqjVIRNbYP8cxi6UoAiDrmdvDcbB7pkb22sqaugzT714UtMpWc%2FGE4doXoe5FurzBMeJ6%2FnW33UvP1ek5kD%2F%2Bdfuw3p%2Fxvw%3D%3D|Чат-логика бота]] ==== Исходный код ==== https://github.com/SonicNorg/Otus_Teachers_Bot (права на запись)