github.com/keybase/client/go@v0.0.0-20240520164431-4f512a4c85a3/client/cmd_chat_remove_bot_member.go (about)

     1  package client
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/keybase/cli"
     7  	"github.com/keybase/client/go/libcmdline"
     8  	"github.com/keybase/client/go/libkb"
     9  	"github.com/keybase/client/go/protocol/chat1"
    10  	isatty "github.com/mattn/go-isatty"
    11  	context "golang.org/x/net/context"
    12  )
    13  
    14  type CmdChatRemoveBotMember struct {
    15  	libkb.Contextified
    16  	resolvingRequest chatConversationResolvingRequest
    17  	username         string
    18  	hasTTY           bool
    19  }
    20  
    21  func NewCmdChatRemoveBotMemberRunner(g *libkb.GlobalContext) *CmdChatRemoveBotMember {
    22  	return &CmdChatRemoveBotMember{
    23  		Contextified: libkb.NewContextified(g),
    24  	}
    25  }
    26  
    27  func newCmdChatRemoveBotMember(cl *libcmdline.CommandLine, g *libkb.GlobalContext) cli.Command {
    28  	flags := getConversationResolverFlags()
    29  	flags = append(flags, cli.StringFlag{
    30  		Name:  "u, user",
    31  		Usage: "username",
    32  	})
    33  	return cli.Command{
    34  		Name:         "remove-bot-member",
    35  		Usage:        "Remove a bot or a restricted bot from a conversation",
    36  		ArgumentHelp: "[conversation]",
    37  		Action: func(c *cli.Context) {
    38  			cl.ChooseCommand(NewCmdChatRemoveBotMemberRunner(g), "remove-bot-member", c)
    39  			cl.SetNoStandalone()
    40  			cl.SetLogForward(libcmdline.LogForwardNone)
    41  		},
    42  		Flags: flags,
    43  	}
    44  }
    45  
    46  func (c *CmdChatRemoveBotMember) Run() (err error) {
    47  	resolver, conversationInfo, err := resolveConversationForBotMember(c.G(), c.resolvingRequest, c.hasTTY)
    48  	if err != nil {
    49  		return err
    50  	}
    51  
    52  	if err = resolver.ChatClient.RemoveBotMember(context.TODO(), chat1.RemoveBotMemberArg{
    53  		ConvID:   conversationInfo.Id,
    54  		Username: c.username,
    55  	}); err != nil {
    56  		return err
    57  	}
    58  	return nil
    59  }
    60  
    61  func (c *CmdChatRemoveBotMember) ParseArgv(ctx *cli.Context) (err error) {
    62  	c.username, err = ParseUser(ctx)
    63  	if err != nil {
    64  		return err
    65  	}
    66  
    67  	c.hasTTY = isatty.IsTerminal(os.Stdin.Fd())
    68  
    69  	var tlfName string
    70  	// Get the TLF name from the first position arg
    71  	if len(ctx.Args()) >= 1 {
    72  		tlfName = ctx.Args().Get(0)
    73  	}
    74  	if c.resolvingRequest, err = parseConversationResolvingRequest(ctx, tlfName); err != nil {
    75  		return err
    76  	}
    77  	return nil
    78  }
    79  
    80  func (c *CmdChatRemoveBotMember) GetUsage() libkb.Usage {
    81  	return libkb.Usage{
    82  		Config: true,
    83  		API:    true,
    84  	}
    85  }