норм пацаны пишут? Или это можно как-то проще сделать? Я прост смотрю и такое ощущение, что я как на сишарпе это все написал
https://gist.github.com/De-Su/838b92986d7ccf621956bb9dbb982268
выглядит в целом норм, не как на сишарпе, что именно не нравится?)
да думал мб принято более декларативно писать, там описать команды в виде DU, чтоб все выглядело в виде конвейера и т.д.
Нафига, а главное зачем
DU обычно используется на стыке двух и более контекстов, в некотором смысле это наша альтернатива DI. Способ разорвать связь с управляемым ресурсом, через представление намерений или произошедших событий в отдельном объекте. Причём под ресурсом не обязательно понимается долгоживущий актор, это может быть одна функция по обработке файла, просто с эпическим количеством опций и данных. Чем больше источников команд и потребителей событий, тем больше промежуточных стадий облекается в типы. В порядке возрастания сложности начинаешь с состояния и команд, двигаешься через запросы, события, проекции и дифы, заканчиваешь сущностями, компонентами и другими ECS-подобными механизмами. Процесс итеративный и, в принципе, предсказуемый. Подзуживать можно, если знаешь, что делаешь, или готов выделить время, чтобы узнать в процессе. Но в целом ориентируешься на сложность происходящего. Если блюдо требует от тебя навыков звезды вебкама, то распиливаешь эту сосиску на куски и продолжаешь спокойно жить в зоне задачек для дошколят. Конкретно в твоём случае DU потенциально может выразить твои команды бота, чтобы унифицировать работу с литералами, но пока они не фигурируют в сообщениях к пользователю, в этом особого смысла нет. В перспективе поможет, если будешь запускать ядро бота где-то ещё или тестировать его не через E2E, но тогда в коде вообще много чего придётся поменять. В остальном, в глаза бросается |> Async.RunSynchronously |> ignore в sendMessage, который вызывается не в корне. Обычно за это полагается строгий аяяй. Async надо холить и лелеять до последнего.
Обсуждают сегодня