Documentation
¶
Overview ¶
Package events provide event handlers for telegram bot and all the high-level event handlers. It parses messages, sends them to the spam detector and handles the results. It can also ban users and send messages to the admin.
In addition to that, it provides support for admin chat handling allowing to unban users via the web service and update the list of spam samples.
Index ¶
- type Bot
- type Locator
- func (l *Locator) AddMessage(msg string, chatID, userID int64, userName string, msgID int)
- func (l *Locator) AddSpam(userID int64, checks []lib.CheckResult)
- func (l *Locator) Message(msg string) (MsgMeta, bool)
- func (l *Locator) MsgHash(msg string) string
- func (l *Locator) Spam(userID int64) (SpamData, bool)
- type MsgMeta
- type SpamData
- type SpamLogger
- type SpamLoggerFunc
- type SpamWeb
- type SuperUser
- type TbAPI
- type TelegramListener
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Bot ¶
type Bot interface { OnMessage(msg bot.Message) (response bot.Response) UpdateSpam(msg string) error UpdateHam(msg string) error AddApprovedUsers(id int64, ids ...int64) RemoveApprovedUsers(id int64, ids ...int64) }
Bot is an interface for bot events.
type Locator ¶ added in v0.2.0
type Locator struct {
// contains filtered or unexported fields
}
Locator stores messages for a given time period. It is used to locate the message in the chat by its hash and to locate spam info. Useful to match messages from admin chat (only text available) to the original message and to get spam info using userID. Note: it is not thread-safe, use it from a single goroutine only.
func NewLocator ¶ added in v0.2.0
NewLocator creates new Locator. ttl defines how long to keep messages, minSize defines the minimum number of messages to keep
func (*Locator) AddMessage ¶ added in v1.2.1
AddMessage adds messages to the locator and removes old messages. Messages are removed the total number of messages exceeds minSize and the last cleanup was performed more than cleanupDuration ago. The reason for minSize is to avoid removing messages on low-traffic chats where admin visits are rare. Note: removes old messages only once per cleanupDuration and only if a new message is added
func (*Locator) AddSpam ¶ added in v1.2.1
func (l *Locator) AddSpam(userID int64, checks []lib.CheckResult)
AddSpam adds spam data for a given user
func (*Locator) Message ¶ added in v1.2.1
Message returns message MsgMeta for given msg this allows to match messages from admin chat (only text available) to the original message
type MsgMeta ¶ added in v0.2.0
type MsgMeta struct {
// contains filtered or unexported fields
}
MsgMeta stores message metadata
type SpamData ¶ added in v1.2.1
type SpamData struct {
// contains filtered or unexported fields
}
SpamData stores spam data for a given user
type SpamLogger ¶
SpamLogger is an interface for spam logger
type SpamLoggerFunc ¶
SpamLoggerFunc is a function that implements SpamLogger interface
type TbAPI ¶
type TbAPI interface { GetUpdatesChan(config tbapi.UpdateConfig) tbapi.UpdatesChannel Send(c tbapi.Chattable) (tbapi.Message, error) Request(c tbapi.Chattable) (*tbapi.APIResponse, error) GetChat(config tbapi.ChatInfoConfig) (tbapi.Chat, error) GetChatAdministrators(config tbapi.ChatAdministratorsConfig) ([]tbapi.ChatMember, error) }
TbAPI is an interface for telegram bot API, only subset of methods used
type TelegramListener ¶
type TelegramListener struct { TbAPI TbAPI SpamLogger SpamLogger Bot Bot Group string // can be int64 or public group username (without "@" prefix) AdminGroup string // can be int64 or public group username (without "@" prefix) IdleDuration time.Duration SuperUsers SuperUser TestingIDs []int64 StartupMsg string NoSpamReply bool TrainingMode bool Dry bool Locator *Locator // contains filtered or unexported fields }
TelegramListener listens to tg update, forward to bots and send back responses Not thread safe