Пример #1
0
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
}