Skip to content

Multi-text bot responses #109

Open
Open
@ufian

Description

Генерация превью тем слушателей генерирует большое количество сообщений в чате (одна тема = одно сообщение), что трудно использовать и весьма шумно.

Обзор

Для решения этой проблемы предлагается использовать мульти-текст сообщения с возможностью листания их туда-сюда

Пример использования клавиатуры
image

Кнопки реагируют только на super user, остальных можно игнорировать или выписывать бан.

Реализация

С точки зрения релизации в коде, я предлагаю расширить структуру Response добавив слайс AltText[]

type Response struct {
	Text        string
	AltText     []string
	Send        bool          // status
	Pin         bool          // enable pin
	Unpin       bool          // enable unpin
	Preview     bool          // enable web preview
	BanInterval time. Duration // bots banning user set the interval
	User        User          // user to ban
	ChannelID   int64         // channel to ban, if set then User and BanInterval are ignored
	ReplyTo     int           // message to reply to, if 0 then no reply but common message
	ParseMode   ParseMode     // parse mode for message in Telegram (we use Markdown by default)
}

Если этот слайс задан, тогда superbot кеширует все Text + AltText в LRU cache.
В параметрах inline кнопок клавиатуры сохраняется ключ и номер предыдущей/следующей старницы.

Когда из телеграма приходит callback нажатия на кнопку, то из кеша берется список возможных текстов сообщения и обновляется на нужный согласно параметру страницы в data.

Таким образом можно посылать мульти-текстовый ответ бота и дальше не беспокоиться о перелистывании страниц, всё будет поддержано на уровне telegram.go/bot.go

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions