You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.5 KiB
115 lines
2.5 KiB
package upconv |
|
|
|
import "github.com/gotd/td/tg" |
|
|
|
func convertOptional(msg *tg.Message, i tg.UpdatesClass) { |
|
if u, ok := i.(interface { |
|
GetFwdFrom() (tg.MessageFwdHeader, bool) |
|
}); ok { |
|
if v, ok := u.GetFwdFrom(); ok { |
|
msg.SetFwdFrom(v) |
|
} |
|
} |
|
if u, ok := i.(interface{ GetViaBotID() (int64, bool) }); ok { |
|
if v, ok := u.GetViaBotID(); ok { |
|
msg.SetViaBotID(v) |
|
} |
|
} |
|
if u, ok := i.(interface { |
|
GetReplyTo() (tg.MessageReplyHeader, bool) |
|
}); ok { |
|
if v, ok := u.GetReplyTo(); ok { |
|
msg.SetReplyTo(v) |
|
} |
|
} |
|
if u, ok := i.(interface { |
|
GetEntities() ([]tg.MessageEntityClass, bool) |
|
}); ok { |
|
if v, ok := u.GetEntities(); ok { |
|
msg.SetEntities(v) |
|
} |
|
} |
|
if u, ok := i.(interface { |
|
GetMedia() (tg.MessageMediaClass, bool) |
|
}); ok { |
|
if v, ok := u.GetMedia(); ok { |
|
msg.SetMedia(v) |
|
} |
|
} |
|
} |
|
|
|
// ShortMessage converts UpdateShortMessage to UpdateShort. |
|
func ShortMessage(u *tg.UpdateShortMessage) *tg.UpdateShort { |
|
msg := &tg.Message{ |
|
ID: u.ID, |
|
PeerID: &tg.PeerUser{UserID: u.UserID}, |
|
Message: u.Message, |
|
Date: u.Date, |
|
} |
|
// Optional fields should set by SetXXX(), so GetXXX and Flags.Has() |
|
// can return the right values even we hav't call .Encode() |
|
msg.SetOut(u.Out) |
|
msg.SetMentioned(u.Mentioned) |
|
msg.SetMediaUnread(u.MediaUnread) |
|
msg.SetSilent(u.Silent) |
|
|
|
if !u.Out { |
|
msg.SetFromID(&tg.PeerUser{UserID: u.UserID}) |
|
} |
|
convertOptional(msg, u) |
|
|
|
return &tg.UpdateShort{ |
|
Update: &tg.UpdateNewMessage{ |
|
Message: msg, |
|
Pts: u.Pts, |
|
PtsCount: u.PtsCount, |
|
}, |
|
Date: u.Date, |
|
} |
|
} |
|
|
|
// ShortChatMessage converts UpdateShortChatMessage to UpdateShort. |
|
func ShortChatMessage(u *tg.UpdateShortChatMessage) *tg.UpdateShort { |
|
msg := &tg.Message{ |
|
ID: u.ID, |
|
PeerID: &tg.PeerChat{ChatID: u.ChatID}, |
|
Message: u.Message, |
|
Date: u.Date, |
|
} |
|
|
|
msg.SetFromID(&tg.PeerUser{UserID: u.FromID}) |
|
msg.SetOut(u.Out) |
|
msg.SetMentioned(u.Mentioned) |
|
msg.SetMediaUnread(u.MediaUnread) |
|
msg.SetSilent(u.Silent) |
|
|
|
convertOptional(msg, u) |
|
|
|
return &tg.UpdateShort{ |
|
Update: &tg.UpdateNewMessage{ |
|
Message: msg, |
|
Pts: u.Pts, |
|
PtsCount: u.PtsCount, |
|
}, |
|
Date: u.Date, |
|
} |
|
} |
|
|
|
// ShortSentMessage converts UpdateShortSentMessage to UpdateShort. |
|
func ShortSentMessage(u *tg.UpdateShortSentMessage) *tg.UpdateShort { |
|
msg := &tg.Message{ |
|
ID: u.ID, |
|
Date: u.Date, |
|
} |
|
msg.SetOut(u.Out) |
|
convertOptional(msg, u) |
|
|
|
return &tg.UpdateShort{ |
|
Update: &tg.UpdateNewMessage{ |
|
Message: msg, |
|
Pts: u.Pts, |
|
PtsCount: u.PtsCount, |
|
}, |
|
Date: u.Date, |
|
} |
|
}
|
|
|