51 lines
1 KiB
Go
51 lines
1 KiB
Go
package tg
|
|
|
|
import (
|
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
|
)
|
|
|
|
type MessageId int64
|
|
|
|
// Implementing the interface provides
|
|
// way to define what message will be
|
|
// sent to the side of a user.
|
|
type Sendable interface {
|
|
SendConfig(SessionId, *Bot) (*SendConfig)
|
|
SetMessage(*Message)
|
|
}
|
|
|
|
type Errorer interface {
|
|
Err() error
|
|
}
|
|
|
|
// The type is used as an endpoint to send messages
|
|
// via bot.Send .
|
|
type SendConfig struct {
|
|
// Message with text and keyboard.
|
|
Message *tgbotapi.MessageConfig
|
|
|
|
// The image to be sent.
|
|
Photo *tgbotapi.PhotoConfig
|
|
Document *tgbotapi.DocumentConfig
|
|
Location *tgbotapi.LocationConfig
|
|
Error error
|
|
}
|
|
|
|
|
|
type MessageMap map[string] *Message
|
|
|
|
// Convert to the bot.Api.Send format.
|
|
func (config *SendConfig) ToApi() tgbotapi.Chattable {
|
|
switch {
|
|
case config.Message != nil :
|
|
return *(config.Message)
|
|
case config.Photo != nil :
|
|
return *(config.Photo)
|
|
case config.Location != nil :
|
|
return *(config.Location)
|
|
case config.Document != nil :
|
|
return *(config.Document)
|
|
}
|
|
return nil
|
|
}
|
|
|