Skip to content

Commit

Permalink
Add reactions support.
Browse files Browse the repository at this point in the history
  • Loading branch information
ti-bone committed Feb 15, 2024
1 parent d21da03 commit c568b85
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 0 deletions.
60 changes: 60 additions & 0 deletions ext/handlers/filters/reaction/reaction.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package reaction

import (
"github.com/PaulSonOfLars/gotgbot/v2"
"github.com/PaulSonOfLars/gotgbot/v2/ext/handlers/filters"
)

func All(_ *gotgbot.MessageReactionUpdated) bool {
return true
}

func FromUserID(id int64) filters.Reaction {
return func(mru *gotgbot.MessageReactionUpdated) bool {
if mru.User != nil {
return mru.User.Id == id
}

return false
}
}

func FromAnonymousChatID(id int64) filters.Reaction {
return func(mru *gotgbot.MessageReactionUpdated) bool {
if mru.ActorChat != nil {
return mru.ActorChat.Id == id
}

return false
}
}

func FromChatID(id int64) filters.Reaction {
return func(mru *gotgbot.MessageReactionUpdated) bool {
return mru.Chat.Id == id
}
}

func NewReactionIn(reaction string) filters.Reaction {
return func(mru *gotgbot.MessageReactionUpdated) bool {
for _, r := range mru.NewReaction {
if r.MergeReactionType().Emoji == reaction {
return true
}
}

return false
}
}

func OldReactionIn(reaction string) filters.Reaction {
return func(mru *gotgbot.MessageReactionUpdated) bool {
for _, r := range mru.OldReaction {
if r.MergeReactionType().Emoji == reaction {
return true
}
}

return false
}
}
1 change: 1 addition & 0 deletions ext/handlers/filters/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ type (
PollAnswer func(pa *gotgbot.PollAnswer) bool
PreCheckoutQuery func(pcq *gotgbot.PreCheckoutQuery) bool
ShippingQuery func(sq *gotgbot.ShippingQuery) bool
Reaction func(mra *gotgbot.MessageReactionUpdated) bool
)
36 changes: 36 additions & 0 deletions ext/handlers/reaction.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package handlers

import (
"fmt"

"github.com/PaulSonOfLars/gotgbot/v2"
"github.com/PaulSonOfLars/gotgbot/v2/ext"
"github.com/PaulSonOfLars/gotgbot/v2/ext/handlers/filters"
)

type Reaction struct {
Filter filters.Reaction
Response Response
}

func NewReaction(f filters.Reaction, r Response) Reaction {
return Reaction{
Filter: f,
Response: r,
}
}

func (r Reaction) CheckUpdate(b *gotgbot.Bot, ctx *ext.Context) bool {
if ctx.MessageReaction == nil {
return false
}
return r.Filter == nil || r.Filter(ctx.MessageReaction)
}

func (r Reaction) HandleUpdate(b *gotgbot.Bot, ctx *ext.Context) error {
return r.Response(b, ctx)
}

func (r Reaction) Name() string {
return fmt.Sprintf("reaction_%p", r.Response)
}

0 comments on commit c568b85

Please sign in to comment.