Marco Lampis
Marco Lampis

Reputation: 453

Dynamic inlineKeyboard buttons (nodejs, telegraf)

I need to create a menu using inlineKeyboard from an array of "n" element that can change in value and number. I'm working with telegraf API and this is how i create a static one:

const bookMenu = Telegraf.Extra
  .markdown()
  .markup((m) => m.inlineKeyboard([[
     m.callbackButton('book1', 'book1-callback'), 
     m.callbackButton("book2", "book2-callback")], 
    [m.callbackButton("book3", "book3-callback")]
    //.....
    //for n buttons
    //.....
]))

How can i do that? I couldn't manage to do a for cycle inside markup

Upvotes: 1

Views: 2431

Answers (1)

Marco Lampis
Marco Lampis

Reputation: 453

const bookMenu = Telegraf.Extra
    .markdown()
    .markup((m) => {                    
        let list = []      
        let j = 0;

        async.each(arrayOfLabel, ()=>{ 
            list.push(m.callbackButton(books[j], "your-unic-callback"))
            j++
        })
    
        return m.inlineKeyboard(list)
})

returning m.inlineKeyboard with the wanted list solved the problem.

Upvotes: 1

Related Questions