2 Commits

Author SHA1 Message Date
da122a3be4 0.8.0 beta 3 2026-02-19 13:58:34 +03:00
1bf7499496 0.8.0 beta 2 2026-02-19 13:33:27 +03:00
4 changed files with 38 additions and 32 deletions

37
bot.go
View File

@@ -47,6 +47,7 @@ func LoadPrefixesFromEnv() []string {
} }
type DbContext interface{} type DbContext interface{}
type NoDB struct{ DbContext }
type Bot[T DbContext] struct { type Bot[T DbContext] struct {
token string token string
debug bool debug bool
@@ -65,7 +66,7 @@ type Bot[T DbContext] struct {
dbContext *T dbContext *T
l10n *L10n l10n *L10n
dbWriterRequested extypes.Slice[*slog.Logger] extraLoggers extypes.Slice[*slog.Logger]
updateOffset int updateOffset int
updateTypes []tgapi.UpdateType updateTypes []tgapi.UpdateType
@@ -81,21 +82,21 @@ func NewBot[T any](opts *BotOpts) *Bot[T] {
uploader := tgapi.NewUploader(api) uploader := tgapi.NewUploader(api)
bot := &Bot[T]{ bot := &Bot[T]{
updateOffset: 0, updateOffset: 0,
errorTemplate: "%s", errorTemplate: "%s",
updateQueue: updateQueue, updateQueue: updateQueue,
api: api, api: api,
uploader: uploader, uploader: uploader,
debug: opts.Debug, debug: opts.Debug,
prefixes: opts.Prefixes, prefixes: opts.Prefixes,
token: opts.Token, token: opts.Token,
plugins: make([]Plugin[T], 0), plugins: make([]Plugin[T], 0),
updateTypes: make([]tgapi.UpdateType, 0), updateTypes: make([]tgapi.UpdateType, 0),
runners: make([]Runner[T], 0), runners: make([]Runner[T], 0),
dbWriterRequested: make([]*slog.Logger, 0), extraLoggers: make([]*slog.Logger, 0),
l10n: &L10n{}, l10n: &L10n{},
} }
bot.dbWriterRequested = bot.dbWriterRequested.Push(api.GetLogger()).Push(uploader.GetLogger()) bot.extraLoggers = bot.extraLoggers.Push(api.GetLogger()).Push(uploader.GetLogger())
if len(opts.ErrorTemplate) > 0 { if len(opts.ErrorTemplate) > 0 {
bot.errorTemplate = opts.ErrorTemplate bot.errorTemplate = opts.ErrorTemplate
@@ -169,13 +170,15 @@ func (bot *Bot[T]) GetLogger() *slog.Logger { return bot.logger
func (bot *Bot[T]) GetDBContext() *T { return bot.dbContext } func (bot *Bot[T]) GetDBContext() *T { return bot.dbContext }
func (bot *Bot[T]) L10n(lang, key string) string { return bot.l10n.Translate(lang, key) } func (bot *Bot[T]) L10n(lang, key string) string { return bot.l10n.Translate(lang, key) }
func (bot *Bot[T]) AddDatabaseLogger(writer func(db *T) slog.LoggerWriter) *Bot[T] { type DbLogger[T DbContext] func(db *T) slog.LoggerWriter
func (bot *Bot[T]) AddDatabaseLoggerWriter(writer DbLogger[T]) *Bot[T] {
w := writer(bot.dbContext) w := writer(bot.dbContext)
bot.logger.AddWriter(w) bot.logger.AddWriter(w)
if bot.RequestLogger != nil { if bot.RequestLogger != nil {
bot.RequestLogger.AddWriter(w) bot.RequestLogger.AddWriter(w)
} }
for _, l := range bot.dbWriterRequested { for _, l := range bot.extraLoggers {
l.AddWriter(w) l.AddWriter(w)
} }
return bot return bot

View File

@@ -2,9 +2,6 @@ package laniakea
import ( import (
"encoding/json" "encoding/json"
"fmt"
"io"
"net/http"
"git.nix13.pw/scuroneko/laniakea/tgapi" "git.nix13.pw/scuroneko/laniakea/tgapi"
) )
@@ -39,13 +36,3 @@ func (bot *Bot[T]) Updates() ([]tgapi.Update, error) {
} }
return updates, err return updates, err
} }
func (bot *Bot[T]) GetFileByLink(link string) ([]byte, error) {
u := fmt.Sprintf("https://api.telegram.org/file/bot%s/%s", bot.token, link)
res, err := http.Get(u)
if err != nil {
return nil, err
}
defer res.Body.Close()
return io.ReadAll(res.Body)
}

View File

@@ -1,5 +1,11 @@
package tgapi package tgapi
import (
"fmt"
"io"
"net/http"
)
type ParseMode string type ParseMode string
const ( const (
@@ -44,3 +50,13 @@ func (api *API) GetFile(params GetFileP) (File, error) {
req := NewRequest[File]("getFile", params) req := NewRequest[File]("getFile", params)
return req.Do(api) return req.Do(api)
} }
func (api *API) GetFileByLink(link string) ([]byte, error) {
u := fmt.Sprintf("https://api.telegram.org/file/bot%s/%s", api.token, link)
res, err := http.Get(u)
if err != nil {
return nil, err
}
defer res.Body.Close()
return io.ReadAll(res.Body)
}

View File

@@ -1,9 +1,9 @@
package utils package utils
const ( const (
VersionString = "0.8.0-beta.1" VersionString = "0.8.0-beta.3"
VersionMajor = 0 VersionMajor = 0
VersionMinor = 8 VersionMinor = 8
VersionPatch = 0 VersionPatch = 0
Beta = 1 Beta = 3
) )