paginator

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2025 License: MIT Imports: 7 Imported by: 1

README

Paginator

paginator.png

Getting Started

package main

import (
	"context"
	"os"
	"os/signal"
	"strconv"

	"github.com/go-telegram/bot"
	"github.com/go-telegram/bot/models"
	"github.com/go-telegram/ui/paginator"
)

var (
	data = []string{
		"*1* Lorem ipsum dolor sit amet, consectetur adipiscing elit",
		"*2* Cras faucibus ipsum vel sodales tincidunt",
		"*3* Nulla bibendum lacus vitae arcu rutrum, quis accumsan dolor auctor",
		"*4* Morbi non mi nec nulla rutrum aliquet",
		"*5* Curabitur quis leo facilisis, vulputate sem id, euismod mauris",
		"*6* Sed condimentum tellus in diam dapibus, in euismod nisi ornare",
		"*7* Quisque ut neque congue, blandit orci vitae, viverra mi",
		"*8* Suspendisse porttitor erat in hendrerit pulvinar",
		"*9* Suspendisse cursus arcu placerat auctor vehicula",
		"*10* Phasellus tempus nisi a urna luctus aliquam",
		"*11* Morbi volutpat tellus placerat molestie ultricies",
		"*12* Nulla at est eu eros luctus eleifend ut nec lorem",
		"*13* Praesent suscipit nibh vel nisl feugiat, et dignissim dolor feugiat",
		"*14* Mauris nec tellus vitae dolor dictum malesuada eget eget felis",
		"*15* Aenean non turpis eu tellus tristique faucibus vitae vitae nisi",
		"*16* Sed id urna sit amet est bibendum pellentesque id dictum urna",
		"*17* Etiam auctor velit quis enim blandit convallis",
		"*18* Pellentesque ut augue eget est tempor dapibus",
		"*19* In hendrerit enim et dignissim iaculis",
		"*20* Etiam eu nibh dignissim, blandit lectus sit amet, euismod libero",
		"*21* Pellentesque aliquam lorem a erat consectetur, ornare facilisis justo laoreet",
		"*22* Vestibulum rhoncus leo mollis blandit vehicula",
		"*23* Etiam maximus ante nec mi euismod, ac finibus arcu congue",
		"*24* Nulla consectetur velit id turpis vehicula viverra",
		"*25* Vivamus dignissim arcu vitae nisl dignissim maximus",
		"*26* Sed euismod tellus sit amet suscipit vehicula",
		"*27* Donec eu tortor pulvinar, vulputate diam sit amet, aliquam turpis",
		"*28* Donec interdum risus bibendum aliquam venenatis",
		"*29* Proin quis tellus in risus interdum iaculis vitae mattis ante",
		"*30* Duis ac tortor ultrices, tempor enim id, auctor sem",
		"*31* Nulla lacinia elit vel nunc aliquet, sit amet vulputate ligula dictum",
		"*32* Phasellus semper nibh aliquet orci viverra aliquet",
		"*33* Praesent id felis non purus fringilla placerat in at lacus",
		"*34* Aenean id felis ut tellus fringilla egestas volutpat sed arcu",
		"*35* Nunc varius magna in scelerisque commodo",
		"*36* Nunc sed orci nec lacus sodales molestie in in metus",
		"*37* Fusce a ipsum fermentum, egestas ex sit amet, ultricies libero",
		"*38* Quisque ullamcorper orci vel ligula posuere iaculis",
		"*39* Pellentesque non orci pellentesque felis consequat varius",
		"*40* Maecenas id mauris scelerisque, elementum elit et, rutrum felis",
	}
)

func main() {
	ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
	defer cancel()

	telegramBotToken := os.Getenv("EXAMPLE_TELEGRAM_BOT_TOKEN")

	opts := []bot.Option{
		bot.WithDefaultHandler(defaultHandler),
	}

	b := bot.New(telegramBotToken, opts...)

	b.Start(ctx)
}

func defaultHandler(ctx context.Context, b *bot.Bot, update *models.Update) {
	opts := []paginator.Option{
		paginator.PerPage(3),
		paginator.WithCloseButton("Close"),
	}

	p := paginator.New(data, opts...)

	p.Show(ctx, b, strconv.Itoa(update.Message.Chat.ID))
}

Options

See in options.go file

ShowOptions

You can use ShowOptions to customize the appearance of the paginator.

For example:

p := paginator.New(data)

p.Show(ctx, b, strconv.Itoa(update.Message.Chat.ID), ShowWithThreadID(42))

See in show_options.go file

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type OnErrorHandler

type OnErrorHandler func(err error)

type Option

type Option func(p *Paginator)

func OnError

func OnError(f OnErrorHandler) Option

OnError sets the error handler

func PerPage

func PerPage(perPage int) Option

PerPage sets the number of items to be displayed per page.

func Separator

func Separator(separator string) Option

Separator sets the separator to be used when generating content lines

func WithCloseButton

func WithCloseButton(text string) Option

WithCloseButton sets the close button to be displayed

func WithPrefix added in v0.3.1

func WithPrefix(s string) Option

WithPrefix is a keyboard option that sets a prefix for the widget

func WithoutEmptyButtons added in v0.4.0

func WithoutEmptyButtons() Option

WithoutEmptyButtons is a keyboard option that hides empty buttons

type Paginator

type Paginator struct {
	// contains filtered or unexported fields
}

func New

func New(b *bot.Bot, data []string, opts ...Option) *Paginator

func (*Paginator) GetCallbackHandlerID added in v0.5.0

func (p *Paginator) GetCallbackHandlerID() string

func (*Paginator) Prefix added in v0.3.1

func (p *Paginator) Prefix() string

Prefix returns the prefix of the widget

func (*Paginator) Show

func (p *Paginator) Show(ctx context.Context, b *bot.Bot, chatID any, opts ...ShowOption) (*models.Message, error)

type ShowOption added in v0.4.1

type ShowOption func(p *bot.SendMessageParams)

func ShowWithReply added in v0.4.1

func ShowWithReply(r *models.ReplyParameters) ShowOption

ShowWithReply sets the reply parameters for the message

func ShowWithThreadID added in v0.4.1

func ShowWithThreadID(threadID int) ShowOption

ShowWithThreadID sets the thread ID for the message

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL