Size: a a a

2020 October 12

p

polunin.ai in rust_offtopic
Hirrolot
не понял
+
источник

b

badtrousers in rust_offtopic
ну ты же знаешь у нас уже есть Poller интерфейс, который позволяет абстрагировать источник апдейтов и есть для него реализации лонг поллов с одних ботов, вебхуков с других ботов
источник

H

Hirrolot in rust_offtopic
так
источник

b

badtrousers in rust_offtopic
у тебя может быть одна программа, но ты ее хочешь 50 раз запустить
источник

b

badtrousers in rust_offtopic
тут идея в том, что ты просто пишешь пакет для бота в котором один универсальный API, а он потом “включается” просто импортом в твоей программе, которая делает для него автоскейлинг, например
источник

b

badtrousers in rust_offtopic
примером такой программы является aws lambda
источник

b

badtrousers in rust_offtopic
ты просто копипастишь в aws lambda наш helloworld и через 10 минут у тебя уже работает такой телеграм–бот, как тебе надо
источник

b

badtrousers in rust_offtopic
блягодаря dsl на основе higher–order functions
источник

b

badtrousers in rust_offtopic
дешево и сердито. тупо и эффективно
источник

H

Hirrolot in rust_offtopic
кажется понял

в teloxide для этого есть обобщённый механизм декораторов над типами

например, можно сделать Throttling<DoSomethingElse<SendMessage<Bot>>>

можешь изменить поведение отдельных частей твоего бота, просто навесив ещё один слой декоратора
источник

H

Hirrolot in rust_offtopic
Throttling ограничивает кол-во запросов в сек
источник

b

badtrousers in rust_offtopic
это совсем другое
источник

b

badtrousers in rust_offtopic
для этого у нас есть тупо middleware для всех апдейтов и отдельных хендлеров
источник

b

badtrousers in rust_offtopic
func DefaultLogger() tele.MiddlewareFunc {
   return Logger(logrus.New(), func(c tele.Context) logrus.Fields {
       sender := c.Sender()
       if sender == nil {
           return nil
       }

       return logrus.Fields{
           // Default set of fields
           "sender": sender.Recipient(),
       }
   })
}
источник

b

badtrousers in rust_offtopic
то есть чтобы ты понимал механика очень очень простая
источник

b

badtrousers in rust_offtopic
я больше говорю про ingest, то есть откуда берутся апдейты
источник

b

badtrousers in rust_offtopic
если ты делаешь нормальное stateless приложение при помощи dsl ему поебать на самом деле откуда пришел апдейт. оно может слушать десяток ботов и в зависимости от назначения делать вообще разную ерунду
источник

H

Hirrolot in rust_offtopic
то есть прикол в том чтобы в одном приложении несколько ботов держать?
источник

b

badtrousers in rust_offtopic
это позволяет легко делать bot as a service модель
источник

b

badtrousers in rust_offtopic
Hirrolot
то есть прикол в том чтобы в одном приложении несколько ботов держать?
нет, но это упрощает например разворачивать несколько одинаковых ботов
источник