func extraUserForEvent(event types.Event) *types.UserId { if event.GetEventType() == matrixTypes.EventTypeMembership { membership := event.GetContent().(*matrixTypes.MembershipEventContent).Membership isInvited := membership == matrixTypes.MembershipInvited isKnocking := membership == matrixTypes.MembershipKnocking isBanned := membership == matrixTypes.MembershipBanned if isInvited || isKnocking || isBanned { state, ok := event.(*matrixTypes.State) if !ok { log.Println("membership event was not a state event:", event) return nil } user, err := types.ParseUserId(state.StateKey) if err != nil { log.Println("failed to parse user id state key:", state.StateKey) return nil } return &user } } return nil }