telegram

package
v0.0.0-...-fbfa20b Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2022 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CommandStart = "/start"
	CommandStop  = "/stop"
	CommandHelp  = "/help"
	CommandChats = "/chats"
	CommandID    = "/id"

	CommandStatus   = "/status"
	CommandAlerts   = "/alerts"
	CommandSilences = "/silences"

	ResponseHelp = `
I'm a Prometheus AlertManager Bot for Telegram. I will notify you about alerts.
You can also ask me about my ` + CommandStatus + `, ` + CommandAlerts + ` & ` + CommandSilences + `

Available commands:
` + CommandStart + ` - Subscribe for alerts.
` + CommandStop + ` - Unsubscribe for alerts.
` + CommandStatus + ` - Print the current status.
` + CommandAlerts + ` - List all alerts.
` + CommandSilences + ` - List all silences.
` + CommandChats + ` - List all users and group chats that subscribed.
` + CommandID + ` - Send the senders Telegram ID (works for all Telegram users).
`
)

Variables

View Source
var ChatNotFoundErr = errors.New("chat not found in store")

ChatNotFoundErr returned by the store if a chat isn't found.

Functions

This section is empty.

Types

type Alertmanager

type Alertmanager interface {
	ListAlerts(context.Context, string, bool) ([]*types.Alert, error)
	ListSilences(context.Context) ([]*types.Silence, error)
	Status(context.Context) (*models.AlertmanagerStatus, error)
}

type Bot

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

Bot runs the alertmanager telegram.

func NewBot

func NewBot(chats BotChatStore, token string, admin int, opts ...BotOption) (*Bot, error)

NewBot creates a Bot with the UserStore and telegram telegram.

func NewBotWithTelegram

func NewBotWithTelegram(chats BotChatStore, bot Telebot, admin int, opts ...BotOption) (*Bot, error)

func (*Bot) Run

func (b *Bot) Run(ctx context.Context, webhooks <-chan alertmanager.TelegramWebhook) error

Run the telegram and listen to messages send to the telegram.

func (*Bot) SendAdminMessage

func (b *Bot) SendAdminMessage(adminID int, message string)

SendAdminMessage to the admin's ID with a message.

type BotChatStore

type BotChatStore interface {
	List() ([]*telebot.Chat, error)
	Get(telebot.ChatID) (*telebot.Chat, error)
	Add(*telebot.Chat) error
	Remove(*telebot.Chat) error
}

BotChatStore is all the Bot needs to store and read.

type BotOption

type BotOption func(b *Bot) error

BotOption passed to NewBot to change the default instance.

func WithAddr

func WithAddr(addr string) BotOption

WithAddr sets the internal listening addr of the bot's web server receiving webhooks.

func WithAlertmanager

func WithAlertmanager(alertmanager Alertmanager) BotOption

func WithCommandEvent

func WithCommandEvent(callback func(command string)) BotOption

WithCommandEvent sets a func to call whenever commands are handled.

func WithExtraAdmins

func WithExtraAdmins(ids ...int) BotOption

WithExtraAdmins allows the specified additional user IDs to issue admin commands to the bot.

func WithLogger

func WithLogger(l log.Logger) BotOption

WithLogger sets the logger for the Bot as an option.

func WithRevision

func WithRevision(r string) BotOption

WithRevision is setting the Bot's revision for status commands.

func WithStartTime

func WithStartTime(st time.Time) BotOption

WithStartTime is setting the Bot's start time for status commands.

func WithTemplates

func WithTemplates(alertmanager *url.URL, templatePaths ...string) BotOption

WithTemplates uses Alertmanager template to render messages for Telegram.

type ChatStore

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

ChatStore writes the users to a libkv store backend.

func NewChatStore

func NewChatStore(kv store.Store, storeKeyPrefix string) (*ChatStore, error)

NewChatStore stores telegram chats in the provided kv backend.

func (*ChatStore) Add

func (s *ChatStore) Add(c *telebot.Chat) error

Add a telegram chat to the kv backend.

func (*ChatStore) Get

func (s *ChatStore) Get(id telebot.ChatID) (*telebot.Chat, error)

Get a specific chat by its ID.

func (*ChatStore) List

func (s *ChatStore) List() ([]*telebot.Chat, error)

List all chats saved in the kv backend.

func (*ChatStore) Remove

func (s *ChatStore) Remove(c *telebot.Chat) error

Remove a telegram chat from the kv backend.

type Telebot

type Telebot interface {
	Start()
	Stop()
	Send(to telebot.Recipient, what interface{}, options ...interface{}) (*telebot.Message, error)
	Notify(to telebot.Recipient, action telebot.ChatAction) error
	Handle(endpoint interface{}, handler interface{})
}

Jump to

Keyboard shortcuts

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