Browse Source

Add SendEphemeralToChannel and SendEphemeralToConvID

main
Sam 4 years ago
parent
commit
d791203856
  1. 42
      chat.go
  2. 43
      types.go

42
chat.go

@ -226,6 +226,48 @@ func (k *Keybase) SendMessageToConvID(convID chat1.ConvIDStr, message string, a @@ -226,6 +226,48 @@ func (k *Keybase) SendMessageToConvID(convID chat1.ConvIDStr, message string, a
return r, nil
}
// SendEphemeralToChannel sends a chat message to a channel
func (k *Keybase) SendEphemeralToChannel(channel chat1.ChatChannel, duration time.Duration, message string, a ...interface{}) (SendResponse, error) {
var r SendResponse
opts := SendMessageOptions{
Channel: channel,
Message: SendMessageBody{
Body: fmt.Sprintf(message, a...),
},
}
opts.ExplodingLifetime.Duration = duration
r, err := k.SendMessage(opts)
if err != nil {
return r, err
}
return r, nil
}
// SendEphemeralToConvID sends a chat message to a conversation id
func (k *Keybase) SendEphemeralToConvID(convID chat1.ConvIDStr, duration time.Duration, message string, a ...interface{}) (SendResponse, error) {
var r SendResponse
opts := SendMessageOptions{
ConversationID: convID,
Message: SendMessageBody{
Body: fmt.Sprintf(message, a...),
},
}
opts.ExplodingLifetime.Duration = duration
r, err := k.SendMessage(opts)
if err != nil {
return r, err
}
return r, nil
}
// Send sends a chat message
func (c Chat) Send(message ...string) (ChatAPI, error) {
m := ChatAPI{

43
types.go

@ -27,20 +27,34 @@ type Error struct { @@ -27,20 +27,34 @@ type Error struct {
Message string `json:"message"`
}
type duration struct {
time.Duration
}
func (d *duration) UnmarshalJSON(b []byte) (err error) {
d.Duration, err = time.ParseDuration(strings.Trim(string(b), `"`))
return
}
func (d *duration) MarshalJSON() (b []byte, err error) {
return []byte(fmt.Sprintf(`"%s"`, d.String())), nil
}
type SendMessageBody struct {
Body string
}
// SendMessageOptions holds a set of options to be passed to SendMessage
type SendMessageOptions struct {
Channel chat1.ChatChannel `json:"channel,omitempty"`
ConversationID chat1.ConvIDStr `json:"conversation_id,omitempty"`
Message SendMessageBody `json:",omitempty"`
Filename string `json:"filename,omitempty"`
Title string `json:"title,omitempty"`
MessageID chat1.MessageID `json:"message_id,omitempty"`
ConfirmLumenSend bool `json:"confirm_lumen_send"`
ReplyTo *chat1.MessageID `json:"reply_to,omitempty"`
Channel chat1.ChatChannel `json:"channel,omitempty"`
ConversationID chat1.ConvIDStr `json:"conversation_id,omitempty"`
Message SendMessageBody `json:",omitempty"`
Filename string `json:"filename,omitempty"`
Title string `json:"title,omitempty"`
MessageID chat1.MessageID `json:"message_id,omitempty"`
ConfirmLumenSend bool `json:"confirm_lumen_send"`
ReplyTo *chat1.MessageID `json:"reply_to,omitempty"`
ExplodingLifetime duration `json:"exploding_lifetime,omitempty"`
}
type sendMessageParams struct {
@ -367,19 +381,6 @@ type mesg struct { @@ -367,19 +381,6 @@ type mesg struct {
Body string `json:"body"`
}
type duration struct {
time.Duration
}
func (d *duration) UnmarshalJSON(b []byte) (err error) {
d.Duration, err = time.ParseDuration(strings.Trim(string(b), `"`))
return
}
func (d *duration) MarshalJSON() (b []byte, err error) {
return []byte(fmt.Sprintf(`"%s"`, d.String())), nil
}
type options struct {
Channel *chat1.ChatChannel `json:"channel,omitempty"`
MessageID int `json:"message_id,omitempty"`

Loading…
Cancel
Save