github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/chat/commands/msg.go (about) 1 package commands 2 3 import ( 4 "context" 5 "strings" 6 7 "github.com/keybase/client/go/chat/globals" 8 "github.com/keybase/client/go/protocol/chat1" 9 "github.com/keybase/client/go/protocol/gregor1" 10 ) 11 12 type Msg struct { 13 *baseCommand 14 } 15 16 func NewMsg(g *globals.Context) *Msg { 17 return &Msg{ 18 baseCommand: newBaseCommand(g, "msg", "<conversation> <message>", 19 "Send a message to a conversation", false, "dm"), 20 } 21 } 22 23 func (d *Msg) Execute(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, 24 tlfName, text string, replyTo *chat1.MessageID) (err error) { 25 defer d.Trace(ctx, &err, "Execute")() 26 if !d.Match(ctx, text) { 27 return ErrInvalidCommand 28 } 29 defer func() { 30 if err != nil { 31 err := d.getChatUI().ChatCommandStatus(ctx, convID, "Failed to send message", 32 chat1.UICommandStatusDisplayTyp_ERROR, nil) 33 if err != nil { 34 d.Debug(ctx, "Execute: error with command status: %+v", err) 35 } 36 } 37 }() 38 toks, err := d.tokenize(text, 3) 39 if err != nil { 40 return err 41 } 42 conv, err := getConvByName(ctx, d.G(), uid, toks[1]) 43 if err != nil { 44 return err 45 } 46 text = strings.Join(toks[2:], " ") 47 _, err = d.G().ChatHelper.SendTextByIDNonblock(ctx, conv.GetConvID(), conv.Info.TlfName, text, nil, 48 replyTo) 49 return err 50 }