ну, проходишься по полученным чатам, для каждого добавляешь свою кнопку, потом отправляешь сообщение с клавиатурой
то что прохожу - это понятно. но я же не могу сделать push в массив вне функции типа такого. вообще не понимаю как в кучу собрать данные
а зачем вне? когда нужны данные, тогда дергаешь базу и собираешь клавиатуру
ну вот я и не могу понять как это сделать, если результатом этого дёрганья является такой цикл. внутрь forEach я ведь не могу запихнуть чёто типа callbackButton(chat.name, chat.id) я знаю как сделать клавиатуру из массива или объекта, а так - хз. тут больше вопрос не к телеграфу, видимо, а к js и/или монге.
let keyboard = [] chats.forEach((chat) => { keyboard.push([{text: chat.name, callback_data: chat.id}]) })
как говорится, то ли лыжи не едут, то ли я ебанутый
Это всё потому что функции с большой буквы называешь
Где await файнда
А где async
хех, пробовал, конечно, но так, оказывается, не работает: let chats = await ctx.CHATS.find(); — зато так работает: await chats.forEach((chat) => { arr.push({id: chat._id, active: chat.active}) }); Спасибо!
Спасибо! Не туда ставил
Там над промис олл обёртку
Здесь async await забыл и можно без forEach, через map, и еще думаю при такой callback_data архитектуре дальше будут проблемы import { Markup as m } from "telegraf"; ... async function ... const chats = await ctx.CHATS.find(); const btns = chats.map(c => m.callbackButton(c.name, c.id)); const keyboard = m.inlineKeyboard(btns); ... return ctx.reply('...', keyboard.extra());
Обсуждают сегодня