diff --git a/bot.go b/bot.go index 58c386b..f105fcf 100644 --- a/bot.go +++ b/bot.go @@ -30,8 +30,8 @@ type Bot struct { logger *slog.Logger requestLogger *slog.Logger - plugins []*Plugin - middlewares []*Middleware + plugins []Plugin + middlewares []Middleware prefixes []string runners []Runner @@ -75,7 +75,7 @@ func LoadPrefixesFromEnv() []string { func NewBot(settings *BotSettings) *Bot { updateQueue := CreateQueue[*Update](256) bot := &Bot{ - updateOffset: 0, plugins: make([]*Plugin, 0), debug: settings.Debug, errorTemplate: "%s", + updateOffset: 0, plugins: make([]Plugin, 0), debug: settings.Debug, errorTemplate: "%s", prefixes: settings.Prefixes, updateTypes: make([]string, 0), runners: make([]Runner, 0), updateQueue: updateQueue, token: settings.Token, @@ -171,20 +171,20 @@ func (b *Bot) Debug(debug bool) *Bot { b.debug = debug return b } -func (b *Bot) AddPlugins(plugin ...*Plugin) *Bot { +func (b *Bot) AddPlugins(plugin ...Plugin) *Bot { b.plugins = append(b.plugins, plugin...) for _, p := range plugin { b.logger.Debugln(fmt.Sprintf("plugins with name \"%s\" registered", p.Name)) } return b } -func (b *Bot) AddMiddleware(middleware ...*Middleware) *Bot { +func (b *Bot) AddMiddleware(middleware ...Middleware) *Bot { b.middlewares = append(b.middlewares, middleware...) for _, m := range middleware { b.logger.Debugln(fmt.Sprintf("middleware with name \"%s\" registered", m.Name)) } - sort.Slice(&b.middlewares, func(i, j int) bool { + sort.Slice(b.middlewares, func(i, j int) bool { first := b.middlewares[i] second := b.middlewares[j] if first.Order == second.Order { diff --git a/methods.go b/methods.go index d2f02fe..687b790 100644 --- a/methods.go +++ b/methods.go @@ -130,7 +130,11 @@ type DeleteMessageP struct { MessageID int `json:"message_id"` } -func (b *Bot) DeleteMessage(params *DeleteMessageP) (*Message, error) { - req := NewRequest[Message]("deleteMessage", params) - return req.Do(b) +func (b *Bot) DeleteMessage(params *DeleteMessageP) (bool, error) { + req := NewRequest[bool]("deleteMessage", params) + ok, err := req.Do(b) + if err != nil { + return false, err + } + return *ok, err } diff --git a/plugins.go b/plugins.go index cfda2b7..414c098 100644 --- a/plugins.go +++ b/plugins.go @@ -45,17 +45,16 @@ func (p *PluginBuilder) UpdateListener(listener CommandExecutor) *PluginBuilder return p } -func (p *PluginBuilder) Build() *Plugin { +func (p *PluginBuilder) Build() Plugin { if len(p.commands) == 0 && len(p.payloads) == 0 { log.Println("no command or payloads") } - plugin := &Plugin{ + return Plugin{ Name: p.name, Commands: p.commands, Payloads: p.payloads, UpdateListener: p.updateListener, } - return plugin } func (p *Plugin) Execute(cmd string, ctx *MsgContext, dbContext *DatabaseContext) {