Comments 13
Спасибо за то, что поделились!
Запилили на хакатоне бота, его, внезапно, решили развивать - а там уже дикая простыня из if-ов) Как раз недавно слегка погуглил какие-то best practices, там как раз к стейт-машине сводится организация многоуровнего общения. И тут еще ваша статья подоспела)
Разве что у нас нет четких команд, попытались совместить с ИИ, чтобы общение шло естественным языком.
Я посмотрел вашу модель пользователя и там практически вся информация есть о пользователи , это какие-то запрашиваемые права на раскрытие данных при авторизации пользователя или через ботов тупо телега сливает всю инфу о акке пользователя?
У меня в ботах +- такая же система, но используется получение ввода от пользователя через ManualResetEventSlim. Может где-то избыточно, но можно сохранять состояние всей команды, всех данных.
Из главного что не увидел это ограничение на отправку сообщений пользователю и общее.
Через RateLimiting сделано общее ограничение на отправку. Для конкретного пользователя сделано через сохранение в ConcurrentDictionary<userid, datetime>. Дальше вычисляется от текущего времени в TimeSpan. Ожидание mres, потом отправка.
Для модернизации можно добавить для конкретного типа сообщений (видео, музыка, текст, etc).
Rate limiting нужен, чтобы ограничить количество запросов от конкретного пользователя?
Это мой первый бот и количество пользователей всего 6 человек, поэтому с нагрузкой вообще не работал
https://github.com/AleXr64/Telegram-bot-framework я таким пользуюсь, мои хотелки закрывает. Не рассматривали?
Статические свойства для регистрации выглядят некрасиво, имхо.
Стандартный способ для подобных целей - атрибут. Нужные кассы декорируются атрибутом, который содержит данные необходимые для регистрации. Рефлексией выбираются все типы, декорированные нужным атрибутом и спокойно регистрируются.
В итоге у нас нет лишних статических свойств, интерфейс не замусорен непонятно чем.
А в остальном - идея хорошая. Встречал несколько реализаций ботов, написаны были гораздо хуже.
Я, видимо, старомоден, и для себя сделал все много проще (https://t.me/TurboBotsChannel).
Телеграмм боты на C# и с чем их едят. TeleBotFramework