Size: a a a

Боты на Telegraf

2020 November 24

M

Mehannoying in Боты на Telegraf
Nikita
за ссылку спасибо, а вообще по канону я знаю для этого те же мютексты используются, но из зза особенностей ноды я так понимаю из коробки их нет?
Да.
источник

N

Nikita in Боты на Telegraf
если нужно что все это было еще на нескольких серверах, работать будет?
источник

i

ik in Боты на Telegraf
показывай код
источник

SB

Semeon Boboshko in Боты на Telegraf
ik
показывай код
app.hears(TelegrafI18n.match('buttons.language'), ({ i18n, replyWithHTML }) => replyWithHTML(
 i18n.t('language.theСhoice'),
 Extra.HTML().markup(() => Markup.inlineKeyboard([
   Markup.callbackButton('English', 'english'),
   Markup.callbackButton('Русский', 'russian'),
 ])),
));

app.on('callback_query', async (ctx, next) => {
 ctx.answerCbQuery();

 if (ctx.update.callback_query.data === 'english') {
   ctx.i18n.locale('en');
   return ctx.editMessageReplyMarkup(ctx.i18n.t('start'), keyboards.main.en);
 } if (ctx.update.callback_query.data === 'russian') {
   console.log(keyboards.main.ru);
   ctx.i18n.locale('ru');
   return ctx.editMessageReplyMarkup(ctx.i18n.t('start'), keyboards.main.ru);
 }
 next();
});
источник

N

Nikita in Боты на Telegraf
Mehannoying
Да.
или можно просто заюзать очередь какую-то, если она подойдет под эту задачу?
источник

i

ik in Боты на Telegraf
Semeon Boboshko
app.hears(TelegrafI18n.match('buttons.language'), ({ i18n, replyWithHTML }) => replyWithHTML(
 i18n.t('language.theСhoice'),
 Extra.HTML().markup(() => Markup.inlineKeyboard([
   Markup.callbackButton('English', 'english'),
   Markup.callbackButton('Русский', 'russian'),
 ])),
));

app.on('callback_query', async (ctx, next) => {
 ctx.answerCbQuery();

 if (ctx.update.callback_query.data === 'english') {
   ctx.i18n.locale('en');
   return ctx.editMessageReplyMarkup(ctx.i18n.t('start'), keyboards.main.en);
 } if (ctx.update.callback_query.data === 'russian') {
   console.log(keyboards.main.ru);
   ctx.i18n.locale('ru');
   return ctx.editMessageReplyMarkup(ctx.i18n.t('start'), keyboards.main.ru);
 }
 next();
});
у тебя клава в keyboards.main.ru?
источник

SB

Semeon Boboshko in Боты на Telegraf
ik
у тебя клава в keyboards.main.ru?
Да
источник

SB

Semeon Boboshko in Боты на Telegraf
её тоже показать?
источник

i

ik in Боты на Telegraf
а в ctx.i18n.t('start') текст?
источник

SB

Semeon Boboshko in Боты на Telegraf
Да
источник

i

ik in Боты на Telegraf
дальше разберешься?)
источник

SB

Semeon Boboshko in Боты на Telegraf
Можно для тупых? )
источник

i

ik in Боты на Telegraf
editMessageReplyMarkup только для маркапа
источник

SB

Semeon Boboshko in Боты на Telegraf
Я до этого пытался вызывать через editMessageText
источник

SB

Semeon Boboshko in Боты на Telegraf
Точно такой же код, но вместо editMessageReplyMarkup был editMessageText
источник

i

ik in Боты на Telegraf
editMessageText сюда текст
editMessageReplyMarkup сюда маркап
источник

M

Mehannoying in Боты на Telegraf
Nikita
если нужно что все это было еще на нескольких серверах, работать будет?
На нескольких серверах?
источник

N

Nikita in Боты на Telegraf
ну типа запросы будут обрабатывать несколько серверов
источник

N

Nikita in Боты на Telegraf
и по одной и той же сущности запрос может прийти обоим
источник

M

Mehannoying in Боты на Telegraf
А не надо обрабатывать на нескольких серверов одно и тоже. Воспользуйтесь очередью и из этой очереди берите задачи.
источник