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 }