Для получения id любого пользователя, есть несколько вариантов, рассмотрим хард способ.
Откройте файл \go\pkg\mod\github.com\mymmrac\telego@v1.0.2\types.go
Найдите объект Message, в него нужно добавить свойство
// Message - This object represents a message.
type Message struct {
.......................//.........................
ForwardFrom MessageFrom `json:"forward_from,omitempty"`
.......................//.........................
`
}
В этом же файле нужно добавить объект «MessageFrom»
type MessageFrom struct {
ID int64 `json:"id"`
IsBot bool `json:"is_bot"`
FirstName string `json:"first_name,omitempty"`
LastName string `json:"last_name,omitempty"`
}
Сохраните файл.
Теперь можно пользоваться данным объектом в Вашем Телеграм боте.
К примеру:
_.HandleMessage(func(ctx *th.Context, msg telego.Message) error {
fmt.Println(msg.ForwardFrom.ID) // здесь Ваш искомый ID
fmt.Println(msg.ForwardFrom.FirstName)
fmt.Println(msg.ForwardFrom.LastName)
}
Благодаря добавленным объектам, вы можете пользоваться переменными
msg.ForwardFrom.ID,
msg.ForwardFrom.FirstName,
msg.ForwardFrom.IsBot,
msg.ForwardFrom.LastName
Где msg это telego.Message.
Стоит добавить, что данные переменные будут доступны, если боту переслать какое-либо сообщение, любого, не «скрытого» пользователя. И будет доступен блок(telego.Message) под капотом:
"forward_from": {
"id": 123456789,
"is_bot": false,
"first_name": "Mr.Smith",
"last_name": "DimariGG"
},
Есть более корректный способ получения id пользователей, если обратить внимание на блок:
type MessageOrigin interface {
OriginType() string
OriginalDate() int64
// Disallow external implementations
iMessageOrigin()
}
Как видите iMessageOrigin() отключен в данной библиотеке, но подключить не очень сложно.
В iMessageOrigin() есть возможность получать все возможные варианты значений из блока
«forward_origin» / «sender_user» , что более логично, так как блок «forward_from» не всегда доступен.