use InputPeerUser by custom username to 'user[%d]'
This commit is contained in:
parent
911e761430
commit
98b3e1da4c
3 changed files with 11 additions and 3 deletions
|
|
@ -35,12 +35,12 @@ func (c *Client) SendDraft(args DraftArguments) (*mcp.ToolResponse, error) {
|
|||
Message: args.Text,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get history: %w", err)
|
||||
return fmt.Errorf("failed to send draft: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to get history")
|
||||
return nil, errors.Wrap(err, "failed to send draft")
|
||||
}
|
||||
|
||||
jsonData, err := json.Marshal(DraftResponse{Success: ok})
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ func getUsername(source any) string {
|
|||
var username string
|
||||
switch u := source.(type) {
|
||||
case *tg.User:
|
||||
username = u.Username
|
||||
username = fmt.Sprintf("user[%d]", u.ID)
|
||||
case *tg.Chat:
|
||||
username = fmt.Sprintf("cht[%d]", u.ID)
|
||||
case *tg.Channel:
|
||||
|
|
|
|||
|
|
@ -89,6 +89,14 @@ func getInputPeerFromName(ctx context.Context, api *tg.Client, name string) (tg.
|
|||
}
|
||||
|
||||
return &chatPeer, nil
|
||||
case strings.HasPrefix(name, "user") && isCustom:
|
||||
var userPeer tg.InputPeerUser
|
||||
_, err := fmt.Sscanf(name, "user[%d]", &userPeer.UserID)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "scan user peer(%q)", name)
|
||||
}
|
||||
|
||||
return &userPeer, nil
|
||||
default:
|
||||
sender := message.NewSender(api)
|
||||
inputPeer, err := sender.Resolve(name).AsInputPeer(ctx)
|
||||
|
|
|
|||
Loading…
Reference in a new issue