Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi-text bot responses #109

Open
ufian opened this issue Apr 12, 2023 · 1 comment
Open

Multi-text bot responses #109

ufian opened this issue Apr 12, 2023 · 1 comment

Comments

@ufian
Copy link
Contributor

ufian commented Apr 12, 2023

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

Обзор

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

Пример использования клавиатуры
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

@ufian
Copy link
Contributor Author

ufian commented Apr 14, 2023

Пример работы решения собранного на коленке

Example.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant