Size: a a a

Боты на Telegraf

2020 December 10

i

ik in Боты на Telegraf
а регать все миддлвари в одном месте кажется не очень удобным, если фильтров много, и для каждого из них одинаковые пре и пост процессор миддлвари
источник

i

ik in Боты на Telegraf
например у меня есть миддлварь, которая на каждый коллбек делает ctx.answerCbQuery, return next
и в коде это выглядит как
bot.on('callback_query', answerCbQueryMiddleware)
bot.action('action1', handler1)
bot.action('action2, handler2)
...
так разве плохо делать?
источник

OS

Oscar S in Боты на Telegraf
ik
то есть, понятно почему он работает, но почему ты пишешь про стейт только в цепочке bot.hears
потому что это нифига не очевидно и лучше так не делать, если мидлы общие для всего бота, то регай их через bot.use
если частные, но их много, то используй Composer.compose
источник

OS

Oscar S in Боты на Telegraf
const commonMiddles = Composer.compose([
  clientMiddle,
  smthMiddle,
  aclMiddle,
 ...
]);
bot.hears('...', commonMiddles, handler);
bot.hears('...', commonMiddles, handler);
источник

OS

Oscar S in Боты на Telegraf
и тогда смысл пропадает в on text, on callback ...
источник

OS

Oscar S in Боты на Telegraf
плюс только один обработчик у on, и тот который ты зарегал последним или первым, над код лесть, но факт что они переопределяются
источник

OS

Oscar S in Боты на Telegraf
вообще даже желательно их не трогать если есть hears, actions ...
источник

i

ik in Боты на Telegraf
а если у меня миддла, которая в самом конце должна отработать?
источник

OS

Oscar S in Боты на Telegraf
Semeon Boboshko
Чат, по какой возможной причине нижний обработчик не выполняется?
^ вот результат такого кода
источник

OS

Oscar S in Боты на Telegraf
ik
а если у меня миддла, которая в самом конце должна отработать?
в каком плане в конце
источник

OS

Oscar S in Боты на Telegraf
после обработки?
источник

OS

Oscar S in Боты на Telegraf
тогда await next()
и все после него
источник

OS

Oscar S in Боты на Telegraf
яж писал это где-то тут
источник

i

ik in Боты на Telegraf
да, типа такого
bot.on('callback_query', answerCbQueryMiddleware)
bot.action('action1', handler1)
bot.action('action2', handler2)
bot.action('action3', handler3)
bot.action('action4', handler4)
bot.on('callback_query', finalCbMiddleware)
источник

OS

Oscar S in Боты на Telegraf
ik
да, типа такого
bot.on('callback_query', answerCbQueryMiddleware)
bot.action('action1', handler1)
bot.action('action2', handler2)
bot.action('action3', handler3)
bot.action('action4', handler4)
bot.on('callback_query', finalCbMiddleware)
не надо так
источник

i

ik in Боты на Telegraf
Oscar S
тогда await next()
и все после него
да, точно!)
источник

i

ik in Боты на Telegraf
Oscar S
не надо так
почи
источник

i

ik in Боты на Telegraf
например, у меня action'ы билдят меню, а bot.on('callback_query', finalCbMiddleware) добавляет общую для всех кнопку и отправляет само сообщение
источник

OS

Oscar S in Боты на Telegraf
а потом в другом месте откуда у меня кнопка)
источник

OS

Oscar S in Боты на Telegraf
тут вообще все не очевидно, и еще можешь где-то переопределить
источник