Problem
The following code to map proto to discordgo struct:
return &discordgo.Channel{
ID: buf.Id,
GuildID: buf.GuildId,
Name: buf.Name,
Topic: buf.Topic,
Type: discordgo.ChannelType(buf.Type),
LastMessageID: buf.LastMessageId,
LastPinTimestamp: util.PbTimestamp2AsTimePtr(buf.LastPinTimestamp),
MessageCount: int(buf.MessageCount),
MemberCount: int(buf.MemberCount),
NSFW: buf.Nsfw,
Icon: buf.Icon,
Position: int(buf.Position),
Bitrate: int(buf.Bitrate),
Recipients: recipients,
Messages: nil, // Getting Library Internal State
PermissionOverwrites: permissionOverwrites,
UserLimit: int(buf.UserLimit),
ParentID: buf.ParentId,
RateLimitPerUser: int(buf.RateLimitPerUser),
OwnerID: buf.OwnerId,
ApplicationID: buf.ApplicationId,
ThreadMetadata: &discordgo.ThreadMetadata{
Archived: buf.ThreadMetadata.Archived,
AutoArchiveDuration: int(buf.ThreadMetadata.AutoArchiveDuration),
ArchiveTimestamp: buf.ThreadMetadata.ArchiveTimestamp.AsTime(),
Locked: buf.ThreadMetadata.Locked,
Invitable: buf.ThreadMetadata.Invitable,
},
Member: &discordgo.ThreadMember{
ID: buf.Member.Id,
UserID: buf.Member.UserId,
JoinTimestamp: buf.Member.JoinTimestamp.AsTime(),
Flags: int(buf.Member.Flags),
Member: BufMemberToStruct(buf.Member.Member),
},
Members: nil, // Getting Library Internal State
Flags: discordgo.ChannelFlags(buf.Flags),
AvailableTags: availableTags,
AppliedTags: buf.AppliedTags,
DefaultReactionEmoji: discordgo.ForumDefaultReaction{
EmojiID: buf.DefaultReactionEmoji.EmojiId,
EmojiName: buf.DefaultReactionEmoji.EmojiName,
},
DefaultThreadRateLimitPerUser: int(buf.DefaultThreadRateLimitPerUser),
DefaultSortOrder: defaultSortOrder,
DefaultForumLayout: discordgo.ForumLayout(buf.DefaultForumLayout),
}
In the struct above, Messages and Members are stored in the discordgo library's internal stateful storage,
and it's inappropriate to send all the data on every request.
Problem
The following code to map proto to discordgo struct:
In the struct above,
MessagesandMembersare stored in the discordgo library's internal stateful storage,and it's inappropriate to send all the data on every request.