Compare commits
2 Commits
v0.8.0-bet
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
da122a3be4
|
|||
|
1bf7499496
|
37
bot.go
37
bot.go
@@ -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
|
||||||
|
|||||||
13
methods.go
13
methods.go
@@ -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)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user