Skip to content

Commit

Permalink
feat(bot): berty-bot-example automatically replies to incoming messages
Browse files Browse the repository at this point in the history
  • Loading branch information
moul committed Sep 19, 2018
1 parent a823484 commit 6bff724
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 13 deletions.
16 changes: 4 additions & 12 deletions client/go/bot/examples/berty-bot-example/main.go
Expand Up @@ -2,9 +2,11 @@ package main

import (
"flag"
"fmt"
"log"

"berty.tech/client/go/bot"
"berty.tech/core/entity"
)

var addr = flag.String("addr", "127.0.0.1:1337", "daemon gRPC address")
Expand All @@ -21,18 +23,8 @@ func main() {
panic(err)
}

b.AddHandlerFunc(func(b *bot.Bot, e *bot.Event) error {
// do stuff
return nil
})
b.AddHandler(bot.Trigger{
If: func(b *bot.Bot, e *bot.Event) bool {
return true
},
Then: func(b *bot.Bot, e *bot.Event) error {
// do stuff
return nil
},
b.AddMessageHandlerFunc(func(b *bot.Bot, e *bot.Event, msg *entity.Message) error {
return b.Reply(e, &entity.Message{Text: fmt.Sprintf("hello! (%s)", msg.Text)})
})

log.Println("starting bot...")
Expand Down
26 changes: 26 additions & 0 deletions client/go/bot/handler.go
@@ -1,5 +1,10 @@
package bot

import (
"berty.tech/core/api/p2p"
"berty.tech/core/entity"
)

//
// Handler
//
Expand Down Expand Up @@ -45,3 +50,24 @@ func (t Trigger) Handle(bot *Bot, event *Event) error {
}
return nil
}

//
// MessageHandler
//

type MessageHandlerFunc func(*Bot, *Event, *entity.Message) error

func (b *Bot) AddMessageHandlerFunc(f MessageHandlerFunc) {
b.AddHandler(Trigger{
If: func(b *Bot, e *Event) bool {
return e.Kind == p2p.Kind_ConversationNewMessage
},
Then: func(b *Bot, e *Event) error {
nm, err := e.GetConversationNewMessageAttrs()
if err != nil {
return err
}
return f(b, e, nm.Message)
},
})
}
14 changes: 14 additions & 0 deletions client/go/bot/message.go
@@ -0,0 +1,14 @@
package bot

import (
"berty.tech/core/api/node"
"berty.tech/core/entity"
)

func (b *Bot) Reply(e *Event, m *entity.Message) error {
_, err := b.client.Node().ConversationAddMessage(e.ctx, &node.ConversationAddMessageInput{
Conversation: &entity.Conversation{ID: e.ConversationID},
Message: m,
})
return err
}
1 change: 0 additions & 1 deletion client/go/bot/option.go
Expand Up @@ -47,7 +47,6 @@ func WithAutoAcceptInvites() Option {
if e.Kind != p2p.Kind_ContactRequest {
return nil
}

_, err := b.client.Node().ContactAcceptRequest(e.ctx, &entity.Contact{
ID: e.SenderID,
})
Expand Down

0 comments on commit 6bff724

Please sign in to comment.