toMemberInfo

Narrows a full Member down to the slim MemberInfo carried by Message.member.

Member.extraData holds every key the member DTO does not declare, which includes stored member fields such as role and deleted_messages. The projection the backend puts on message.member carries none of them, so they are dropped here to keep MemberInfo.extraData identical no matter whether it came from a message payload or from a member event.