Add bot advertisement methods
This commit is contained in:
38
chat.go
38
chat.go
@ -489,3 +489,41 @@ func (c Chat) Mark(messageID int) (ChatAPI, error) {
|
|||||||
}
|
}
|
||||||
return r, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClearCommands clears bot advertisements
|
||||||
|
func (k *Keybase) ClearCommands() (ChatAPI, error) {
|
||||||
|
m := ChatAPI{}
|
||||||
|
m.Method = "clearcommands"
|
||||||
|
|
||||||
|
r, err := chatAPIOut(k, m)
|
||||||
|
if err != nil {
|
||||||
|
return ChatAPI{}, err
|
||||||
|
}
|
||||||
|
return r, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AdvertiseCommands sets up bot command advertisements
|
||||||
|
// This method allows you to set up multiple different types of advertisements at once.
|
||||||
|
// Use this method if you have commands whose visibility differs from each other.
|
||||||
|
func (k *Keybase) AdvertiseCommands(advertisements []BotAdvertisement) (ChatAPI, error) {
|
||||||
|
m := ChatAPI{
|
||||||
|
Params: ¶ms{},
|
||||||
|
}
|
||||||
|
m.Method = "advertisecommands"
|
||||||
|
m.Params.Options.BotAdvertisements = advertisements
|
||||||
|
|
||||||
|
r, err := chatAPIOut(k, m)
|
||||||
|
if err != nil {
|
||||||
|
return ChatAPI{}, err
|
||||||
|
}
|
||||||
|
return r, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AdvertiseCommand sets up bot command advertisements
|
||||||
|
// This method allows you to set up one type of advertisement.
|
||||||
|
// Use this method if you have commands whose visibility should all be the same.
|
||||||
|
func (k *Keybase) AdvertiseCommand(advertisement BotAdvertisement) (ChatAPI, error) {
|
||||||
|
return k.AdvertiseCommands([]BotAdvertisement{
|
||||||
|
advertisement,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@ -36,6 +36,14 @@ func NewKeybase(path ...string) *Keybase {
|
|||||||
return k
|
return k
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewBotCommand returns a new BotCommand instance
|
||||||
|
func NewBotCommand(name string, description string) BotCommand {
|
||||||
|
return BotCommand{
|
||||||
|
Name: name,
|
||||||
|
Description: description,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Exec executes the given Keybase command
|
// Exec executes the given Keybase command
|
||||||
func (k *Keybase) Exec(command ...string) ([]byte, error) {
|
func (k *Keybase) Exec(command ...string) ([]byte, error) {
|
||||||
out, err := exec.Command(k.Path, command...).Output()
|
out, err := exec.Command(k.Path, command...).Output()
|
||||||
|
|||||||
42
types.go
42
types.go
@ -296,23 +296,36 @@ type Channel struct {
|
|||||||
TopicName string `json:"topic_name,omitempty"`
|
TopicName string `json:"topic_name,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type BotCommand struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type BotAdvertisement struct {
|
||||||
|
Type string `json:"type"` // "public", "teamconvs", "teammembers"
|
||||||
|
TeamName string `json:"team_name,omitempty"` // required if Type is not "public"
|
||||||
|
BotCommands []BotCommand `json:"commands"`
|
||||||
|
}
|
||||||
|
|
||||||
type mesg struct {
|
type mesg struct {
|
||||||
Body string `json:"body"`
|
Body string `json:"body"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type options struct {
|
type options struct {
|
||||||
Channel *Channel `json:"channel,omitempty"`
|
Channel *Channel `json:"channel,omitempty"`
|
||||||
MessageID int `json:"message_id,omitempty"`
|
MessageID int `json:"message_id,omitempty"`
|
||||||
Message *mesg `json:"message,omitempty"`
|
Message *mesg `json:"message,omitempty"`
|
||||||
Pagination *pagination `json:"pagination,omitempty"`
|
Pagination *pagination `json:"pagination,omitempty"`
|
||||||
Filename string `json:"filename,omitempty,omitempty"`
|
Filename string `json:"filename,omitempty,omitempty"`
|
||||||
Title string `json:"title,omitempty,omitempty"`
|
Title string `json:"title,omitempty,omitempty"`
|
||||||
Output string `json:"output,omitempty,omitempty"`
|
Output string `json:"output,omitempty,omitempty"`
|
||||||
ConversationID string `json:"conversation_id,omitempty"`
|
ConversationID string `json:"conversation_id,omitempty"`
|
||||||
FlipConversationID string `json:"flip_conversation_id,omitempty"`
|
FlipConversationID string `json:"flip_conversation_id,omitempty"`
|
||||||
MsgID int `json:"msg_id,omitempty"`
|
MsgID int `json:"msg_id,omitempty"`
|
||||||
ReplyTo int `json:"reply_to,omitempty"`
|
ReplyTo int `json:"reply_to,omitempty"`
|
||||||
GameID string `json:"game_id,omitempty"`
|
GameID string `json:"game_id,omitempty"`
|
||||||
|
Alias string `json:"alias,omitempty"`
|
||||||
|
BotAdvertisements []BotAdvertisement `json:"advertisements,omitempty"`
|
||||||
|
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
Public bool `json:"public,omitempty"`
|
Public bool `json:"public,omitempty"`
|
||||||
@ -641,14 +654,17 @@ type wallet interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type keybase interface {
|
type keybase interface {
|
||||||
|
AdvertiseCommand(advertisement BotAdvertisement) (ChatAPI, error)
|
||||||
|
AdvertiseCommands(advertisements []BotAdvertisement) (ChatAPI, error)
|
||||||
ChatList() (ChatAPI, error)
|
ChatList() (ChatAPI, error)
|
||||||
|
ClearCommands() (ChatAPI, error)
|
||||||
CreateTeam(name string) (TeamAPI, error)
|
CreateTeam(name string) (TeamAPI, error)
|
||||||
NewChat(channel Channel) Chat
|
NewChat(channel Channel) Chat
|
||||||
NewTeam(name string) Team
|
NewTeam(name string) Team
|
||||||
NewWallet() Wallet
|
NewWallet() Wallet
|
||||||
Run(handler func(ChatAPI), options ...RunOptions)
|
Run(handler func(ChatAPI), options ...RunOptions)
|
||||||
version() string
|
|
||||||
status() status
|
status() status
|
||||||
|
version() string
|
||||||
}
|
}
|
||||||
|
|
||||||
type status struct {
|
type status struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user