@kur4chyt
Качественный говнокод от производителя

INLINE кнопки для VK-Бота на NODE.JS?

Как сделать INLINE кнопки с помощью библиотеки node-vk-bot,
заметьте, это не node-vk-bot-api, а именно node-vk-bot.

Если кто знает, напишите пожалуйста)
  • Вопрос задан
  • 759 просмотров
Пригласить эксперта
Ответы на вопрос 1
@loonny
Читайте в документации node-vk-bot, документация на русском. Эта библиотека не поддерживает отправку inline клавиатуры. Вы можете залезть в исходный код и немного его подправить для добавления этой функции. Это некрасиво, но если вам необходимо это для решения задачи - допустимо.

Вот, я уже сделал это за вас. Измените код Keyboard.ts на этот:
export enum KeyboardColor {
  PRIMARY = 'primary',
  DEFAULT = 'default',
  NEGATIVE = 'negative',
  POSITIVE = 'positive'
}

/**
 * Класс для создания клавиатуры для бота
 */
export default class Keyboard {
  private obj: any

  constructor(oneTime = false, inline = false) { this.obj = { one_time: oneTime, inline: inline, buttons: [] } }

  addButton(label: string, color: string = KeyboardColor.DEFAULT, payload = null) {
    if (!this.obj.buttons.length) this.obj.buttons.push([])

    let lastRow = this.obj.buttons[this.obj.buttons.length - 1]
    if (lastRow.length === 4) throw new Error('Maximum amount of buttons in one row = 4')

    lastRow.push({ action: { type: 'text', label, payload }, color })

    return this
  }

  addRow() {
    if (this.obj.buttons.length === 10) throw new Error('Maximum amount of rows = 10')
    this.obj.buttons.push([])

    return this
  }

  toString() { return JSON.stringify(this.obj) }
}

Конструктор Keyboard теперь будет иметь не 1, а 2 параметра. Первый это oneTime с дефолтным значением false, а второй inline с дефолтным значением false.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы