|
|
|
@ -35,15 +35,27 @@ func (c *Client) GetContactByUsername(username string) (*client.Chat, *client.Us
|
|
|
|
|
return nil, nil, errOffline
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
chat, err := c.client.SearchPublicChat(&client.SearchPublicChatRequest{
|
|
|
|
|
Username: username,
|
|
|
|
|
})
|
|
|
|
|
var chat *client.Chat
|
|
|
|
|
var err error
|
|
|
|
|
var userID int64
|
|
|
|
|
if strings.HasPrefix(username, "@") {
|
|
|
|
|
chat, err = c.client.SearchPublicChat(&client.SearchPublicChatRequest{
|
|
|
|
|
Username: username,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, nil, err
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
userID = chat.Id
|
|
|
|
|
} else {
|
|
|
|
|
userID, err = strconv.ParseInt(username, 10, 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return c.GetContactByID(chat.Id, chat)
|
|
|
|
|
return c.GetContactByID(userID, chat)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GetContactByID gets user and chat information from cache (or tries to retrieve it, if missing)
|
|
|
|
|