Skip to content

Commit

Permalink
Fix README syntax for example code snippets (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
marceloneil authored and Nathan Smith committed Aug 6, 2019
1 parent 8e39302 commit 9e9cf5a
Showing 1 changed file with 42 additions and 14 deletions.
56 changes: 42 additions & 14 deletions README.md
Expand Up @@ -38,13 +38,13 @@ func main() {
flag.StringVar(&kbLoc, "keybase", "keybase", "the location of the Keybase app")
flag.Parse()

if kbc, err = kbchat.Start(kbchat.RunOptions{KeybaseLocation: kbLoc)}); err != nil {
if kbc, err = kbchat.Start(kbchat.RunOptions{KeybaseLocation: kbLoc}); err != nil {
fail("Error creating API: %s", err.Error())
}

tlfName := fmt.Sprintf("%s,%s", kbc.Username(), "kb_monbot")
fmt.Printf("saying hello on conversation: %s\n", tlfName)
if err = kbc.SendMessageByTlfName(tlfName, "hello!"); err != nil {
if _, err = kbc.SendMessageByTlfName(tlfName, "hello!"); err != nil {
fail("Error sending message; %s", err.Error())
}
}
Expand All @@ -53,23 +53,27 @@ func main() {

### Commands

#### `Start(keybaseLocation string) *API`
#### `Start(runOpts RunOptions) (*API, error)`

This must be run first in order to start the Keybase JSON API stdin/stdout interactive mode.

#### `API.SendMessageByTlfName(tlfName string, body string) error`
#### `API.SendMessageByTlfName(tlfName string, body string) (SendResponse, error)`

send a new message by specifying a TLF name

#### `API.SendMessage(convID string, body string) error`
#### `API.SendMessage(channel Channel, body string) (SendResponse, error)`

send a new message by specifying a channel

#### `API.SendMessageByConvID(convID string, body string) (SendResponse, error)`

send a new message by specifying a conversation ID

#### `API.GetConversations(unreadOnly bool) ([]Conversation, error)`

get all conversations, optionally filtering for unread status

#### `API.GetTextMessages(convID string, unreadOnly bool) ([]Message, error)`
#### `API.GetTextMessages(channel Channel, unreadOnly bool) ([]Message, error)`

get all text messages, optionally filtering for unread status

Expand All @@ -81,34 +85,50 @@ Returns an object that allows for a bot to enter into a loop calling `NewSubscri
to receive any new message across all conversations (except the bots own messages). See the following example:

```go
sub := kbc.ListenForNewTextMessages()
sub, err := kbc.ListenForNewTextMessages()
if err != nil {
fail("Error listening: %s", err.Error())
}

for {
msg, err := sub.Read()
if err != nil {
fail("failed to read message: %s", err.Error())
}

if err = kbc.SendMessage(msg.Conversation.Id, msg.Message.Content.Text.Body); err != nil {
if msg.Message.Content.Type != "text" {
continue
}

if msg.Message.Sender.Username == kbc.GetUsername() {
continue
}

if _, err = kbc.SendMessage(msg.Message.Channel, msg.Message.Content.Text.Body); err != nil {
fail("error echo'ing message: %s", err.Error())
}
}
```

#### `API.Listen(kbc.ListenOptions{Wallet: true}) NewSubscription`
#### `API.Listen(kbchat.ListenOptions{Wallet: true}) NewSubscription`

Returns the same object as above, but this one will have another channel on it that also gets wallet events. You can get those just like chat messages: `NewSubscription.ReadWallet`. So if you care about both of these types of events, you might run two loops like this:

```go
sub := kbc.Listen(kbc.ListenOptions{Wallet: true})
sub, err := kbc.Listen(kbchat.ListenOptions{Wallet: true})
if err != nil {
fail("Error listening: %s", err.Error())
}

go func() {
for {
payment, err := sub.ReadWallet()
if err != nil {
fail("failed to read payment event: %s", err.Error())
}
tlfName := fmt.Sprintf("%s,%s", payment.FromUsername, "kb_monbot")
msg := fmt.Sprintf("thanks for the %s!", payment.AmountDescription)
if err = kbc.SendMessageByTlfName(tlfName, msg); err != nil {
tlfName := fmt.Sprintf("%s,%s", payment.Payment.FromUsername, "kb_monbot")
msg := fmt.Sprintf("thanks for the %s!", payment.Payment.AmountDescription)
if _, err = kbc.SendMessageByTlfName(tlfName, msg); err != nil {
fail("error thanking for payment: %s", err.Error())
}
}
Expand All @@ -120,7 +140,15 @@ Returns the same object as above, but this one will have another channel on it t
fail("failed to read message: %s", err.Error())
}

if err = kbc.SendMessage(msg.Conversation.Id, msg.Message.Content.Text.Body); err != nil {
if msg.Message.Content.Type != "text" {
continue
}

if msg.Message.Sender.Username == kbc.GetUsername() {
continue
}

if _, err = kbc.SendMessage(msg.Message.Channel, msg.Message.Content.Text.Body); err != nil {
fail("error echo'ing message: %s", err.Error())
}
}
Expand Down

0 comments on commit 9e9cf5a

Please sign in to comment.